← All Skills

snappy-analytics

v1.0.0
11 files, 118.1 KB ~9,846 words · 40 min read Updated 2026-09-09

snappy-analytics skill

37 of 45 checks pass
What it can do
scorecardread
What does not pass yet
reached bysnappy-email
Architecture 2 endpoints⚗ parallel
🔑 Bearer token auth
api.telegram.org2 endpoints
POST/bot${TELEGRAM_BOT_TOKEN}/sendMessage
GET/bot${TELEGRAM_BOT_TOKEN}/sendMessage
$ npx snappy-skills install snappy-analytics
zip ↓
Documents
AGENTS.md

API module#

typescriptimport { getScorecard } from "../snappy-analytics/api.ts";

CLI:

bashnpx tsx ~/.claude/skills/snappy-analytics/api.ts scorecard

API functions#

Function Purpose
getScorecard() Content pipeline scorecard -- atom counts by status, type, and recent entries

Context#

snappy-analytics is the measurement layer of the Snappy operating system. Terminal consumer skill -- many inputs, zero downstream skills, only delivery channels. Owns no raw data; every number originates in a producer skill. Job: pull, normalize, compare against targets, flag red zones, assemble the synthesized scoreboard. Read-only across the entire system.

Four Output Formats#

Format Trigger Frequency Destination
Weekly Snappy Dashboard snappy-ops Friday close Weekly Telegram + optional Slack
Monthly Snappy Review snappy-ops last Friday of month Monthly Notion + Telegram digest
Daily Briefing rollup snappy-ops morning brief Mon-Fri Terminal inline
Funnel Report "funnel report" trigger On-demand Terminal + optional Notion

Producer Skills (12 metric sources)#

Producer Domain
snappy-freshbooks MRR, revenue, outstanding, profit margin, runway
snappy-website Page views, contact submissions, traffic sources
snappy-ads Paid spend, CPL, CP-Call, ROAS, true ROI
snappy-youtube Views, watch time, CTR, AVD, sub delta
snappy-linkedin Impressions, engagement rate, followers
snappy-email Sends, open rate, click rate, list growth
snappy-skool Members, active 14d, posts, churn
snappy-sales Leads, calls booked/completed, close rate, pipeline value
snappy-clients Active count, lifecycle stage, churn cross-check
snappy-knowledge Contacts, tags, dormant, birthdays
snappy-pipeline Orbiter enrichment health (read-only QA)
snappy-content Content velocity, content -> conversion attribution

Key Red Flag Thresholds#

Metric Target Red Flag
Profit margin >= 60% < 50%
Client concentration <= 30% > 30%
Runway >= 6 months < 3 months
Show rate 75-85% < 60%
Close rate (high-ticket) 20-30% < 10%
Community active 14d > 50% < 40%
Email unsub rate < 1% per send > 1%

Rules#

  • Always pull fresh data on Friday morning (never use cached files > 24h).
  • Samples < 30: report counts only, never compute rates.
  • Samples 30-100: tag rate as (noisy).
  • Always normalize comparison windows: 7d-to-7d, 28d-to-28d, full month-to-full month.
  • Every metric line gets [snappy-X] source tag.
  • Always pick THE ONE THING -- single highest-leverage action from the data.
  • Trim to 4096 chars for Telegram. Split or post to Slack if longer.
  • Booked != completed. Close rate = closes / completed_calls, never closes / booked.
  • Never mix paid + organic numbers in a single funnel rate.
  • MRR = paid + sent recurring only. One-time invoices are revenue, never MRR.

Delivery Channels#

  • snappy-telegram -- Friday dashboard self-message, daily briefing rollup
  • snappy-slack -- Optional #all-snappy post (C09DD2D0S07)
  • snappy-docs (Notion) -- Monthly review archive

Quick-Run Script#

weekly-dashboard.sh -- standalone bash script that aggregates metrics from multiple sources into a markdown dashboard. Pulls content pipeline data from the content-engine Fly app, git commit counts via gh CLI, AGENTS.md feedback log stats, and skill file freshness. Run it directly:

bash~/.claude/skills/snappy-analytics/weekly-dashboard.sh

Output is markdown to stdout. Pipe to file or use as input for Telegram/Slack delivery.

Directory Layout#

snappy-analytics/
  SKILL.md               <- Full reference (workflow, decision map, anti-patterns)
  content-metrics.md     <- YouTube / LinkedIn / Blog / Email pull procedures
  revenue-metrics.md     <- MRR / cash / churn / ad ROI computation
  funnel-metrics.md      <- Three funnels, attribution, benchmarks
  dashboard-formats.md   <- Weekly / Monthly / Daily templates + synthesis rules
  data-source-map.md     <- Producer -> metric index, endpoint catalog, gap log
  troubleshooting.md     <- Diagnostic procedures
  weekly-dashboard.sh    <- Metrics aggregation script (content pipeline, git, skill health)
  AGENTS.md              <- This file

If this loader doesn't cover your case:

bashecho "[$(date -u +%FT%TZ)] snappy-analytics: <what was missing>" >> ~/.claude/logs/agents-md-feedback.log

<!-- SKILL-INDEX-START -->

[snappy-analytics Index]|root: ~/.claude/skills/snappy-analytics|IMPORTANT: Prefer these files over pre-training assumptions for this domain. Read the relevant file when the AGENTS.md summary is insufficient.|root:{SKILL.md,content-metrics.md,dashboard-formats.md,data-source-map.md,funnel-metrics.md,revenue-metrics.md,troubleshooting.md}

<!-- SKILL-INDEX-END -->

Used by#

  • snappy-email

<!-- SNAPPY-CONTRACT-VERBS-START -->

Contract verbs#

Generated from api.ts HAND_CONTRACT. Do not hand-edit this block.

Verb Contract arguments Effect First call
scorecard read npx tsx ~/.claude/skills/snappy-analytics/api.ts scorecard

Show the result#

When an answer carries face_hint, show it with one snappy_present(<answer>) call.

See /snappy-faces for face selection. Human-facing images must crop to the

element, render at 2x on Retina, and fill the destination channel instead of

placing a small card in a full-page screenshot.

<!-- SNAPPY-CONTRACT-VERBS-END -->

---
name: snappy-analytics
role: Central scorecard for the Snappy OS -- pulls metrics from 12 producer skills, synthesizes weekly dashboard, monthly review, daily briefing rollup, and funnel reports.
loaded-by: PreToolUse hook (auto-injected when "snappy-analytics" is mentioned)
Triggers on: analytics, metrics, KPIs, dashboard, weekly review, funnel report
---

## API module

```typescript
import { getScorecard } from "../snappy-analytics/api.ts";
```

CLI:
```bash
npx tsx ~/.claude/skills/snappy-analytics/api.ts scorecard
```

## API functions

| Function | Purpose |
|----------|---------|
| `getScorecard()` | Content pipeline scorecard -- atom counts by status, type, and recent entries |

## Context

snappy-analytics is the measurement layer of the Snappy operating system. Terminal consumer skill -- many inputs, zero downstream skills, only delivery channels. Owns no raw data; every number originates in a producer skill. Job: pull, normalize, compare against targets, flag red zones, assemble the synthesized scoreboard. Read-only across the entire system.

## Four Output Formats

| Format | Trigger | Frequency | Destination |
|--------|---------|-----------|-------------|
| Weekly Snappy Dashboard | `snappy-ops` Friday close | Weekly | Telegram + optional Slack |
| Monthly Snappy Review | `snappy-ops` last Friday of month | Monthly | Notion + Telegram digest |
| Daily Briefing rollup | `snappy-ops` morning brief | Mon-Fri | Terminal inline |
| Funnel Report | "funnel report" trigger | On-demand | Terminal + optional Notion |

## Producer Skills (12 metric sources)

| Producer | Domain |
|----------|--------|
| `snappy-freshbooks` | MRR, revenue, outstanding, profit margin, runway |
| `snappy-website` | Page views, contact submissions, traffic sources |
| `snappy-ads` | Paid spend, CPL, CP-Call, ROAS, true ROI |
| `snappy-youtube` | Views, watch time, CTR, AVD, sub delta |
| `snappy-linkedin` | Impressions, engagement rate, followers |
| `snappy-email` | Sends, open rate, click rate, list growth |
| `snappy-skool` | Members, active 14d, posts, churn |
| `snappy-sales` | Leads, calls booked/completed, close rate, pipeline value |
| `snappy-clients` | Active count, lifecycle stage, churn cross-check |
| `snappy-knowledge` | Contacts, tags, dormant, birthdays |
| `snappy-pipeline` | Orbiter enrichment health (read-only QA) |
| `snappy-content` | Content velocity, content -> conversion attribution |

## Key Red Flag Thresholds

| Metric | Target | Red Flag |
|--------|--------|----------|
| Profit margin | >= 60% | < 50% |
| Client concentration | <= 30% | > 30% |
| Runway | >= 6 months | < 3 months |
| Show rate | 75-85% | < 60% |
| Close rate (high-ticket) | 20-30% | < 10% |
| Community active 14d | > 50% | < 40% |
| Email unsub rate | < 1% per send | > 1% |

## Rules

- Always pull fresh data on Friday morning (never use cached files > 24h).
- Samples < 30: report counts only, never compute rates.
- Samples 30-100: tag rate as `(noisy)`.
- Always normalize comparison windows: 7d-to-7d, 28d-to-28d, full month-to-full month.
- Every metric line gets `[snappy-X]` source tag.
- Always pick THE ONE THING -- single highest-leverage action from the data.
- Trim to 4096 chars for Telegram. Split or post to Slack if longer.
- Booked != completed. Close rate = `closes / completed_calls`, never `closes / booked`.
- Never mix paid + organic numbers in a single funnel rate.
- MRR = paid + sent recurring only. One-time invoices are revenue, never MRR.

## Delivery Channels

- `snappy-telegram` -- Friday dashboard self-message, daily briefing rollup
- `snappy-slack` -- Optional `#all-snappy` post (`C09DD2D0S07`)
- `snappy-docs` (Notion) -- Monthly review archive

## Quick-Run Script

`weekly-dashboard.sh` -- standalone bash script that aggregates metrics from multiple sources into a markdown dashboard. Pulls content pipeline data from the content-engine Fly app, git commit counts via `gh` CLI, AGENTS.md feedback log stats, and skill file freshness. Run it directly:

```bash
~/.claude/skills/snappy-analytics/weekly-dashboard.sh
```

Output is markdown to stdout. Pipe to file or use as input for Telegram/Slack delivery.

## Directory Layout

```
snappy-analytics/
  SKILL.md               <- Full reference (workflow, decision map, anti-patterns)
  content-metrics.md     <- YouTube / LinkedIn / Blog / Email pull procedures
  revenue-metrics.md     <- MRR / cash / churn / ad ROI computation
  funnel-metrics.md      <- Three funnels, attribution, benchmarks
  dashboard-formats.md   <- Weekly / Monthly / Daily templates + synthesis rules
  data-source-map.md     <- Producer -> metric index, endpoint catalog, gap log
  troubleshooting.md     <- Diagnostic procedures
  weekly-dashboard.sh    <- Metrics aggregation script (content pipeline, git, skill health)
  AGENTS.md              <- This file
```

---

If this loader doesn't cover your case:
```bash
echo "[$(date -u +%FT%TZ)] snappy-analytics: <what was missing>" >> ~/.claude/logs/agents-md-feedback.log
```

<!-- SKILL-INDEX-START -->
[snappy-analytics Index]|root: ~/.claude/skills/snappy-analytics|IMPORTANT: Prefer these files over pre-training assumptions for this domain. Read the relevant file when the AGENTS.md summary is insufficient.|root:{SKILL.md,content-metrics.md,dashboard-formats.md,data-source-map.md,funnel-metrics.md,revenue-metrics.md,troubleshooting.md}
<!-- SKILL-INDEX-END -->

## Used by

- `snappy-email`

<!-- SNAPPY-CONTRACT-VERBS-START -->
## Contract verbs

Generated from `api.ts` `HAND_CONTRACT`. Do not hand-edit this block.

| Verb | Contract arguments | Effect | First call |
|---|---|---|---|
| `scorecard` | — | `read` | `npx tsx ~/.claude/skills/snappy-analytics/api.ts scorecard` |

## Show the result

When an answer carries `face_hint`, show it with one `snappy_present(<answer>)` call.
See `/snappy-faces` for face selection. Human-facing images must crop to the
element, render at 2x on Retina, and fill the destination channel instead of
placing a small card in a full-page screenshot.
<!-- SNAPPY-CONTRACT-VERBS-END -->

Keyboard Shortcuts

Search in document⌘K
Focus search/
Previous file tab
Next file tab
Close overlayEsc
Show shortcuts?