dashboard
/dashboard
See everything. Find traction signals.
What This Does
Aggregates metrics from all MistyStep products into a single view:
- Traffic: PostHog analytics per project (with MCP)
- Revenue: Stripe (subscriptions, one-time payments)
- Errors: Sentry error counts
- Changes: Week-over-week deltas with anomaly flags
Output Format
┌──────────────────────────────────────────────────────────────────┐
│ MISTYSTEP PORTFOLIO - Week of Jan 20 │
├──────────────────────────────────────────────────────────────────┤
│ Product │ Visits │ Δ │ Revenue │ Errors │ Status │
├──────────────────────────────────────────────────────────────────┤
│ Volume │ 892 │ ↑147%│ $45.00 │ 0 │ ⚠️ SIGNAL │
│ Heartbeat │ 234 │ ↑ 12%│ $0.00 │ 2 │ 🟢 │
│ Scry │ 45 │ ↓ 5%│ $0.00 │ 0 │ 🟢 │
│ Crondle │ 156 │ → 0%│ $0.00 │ 0 │ 🟢 │
│ ... │ │ │ │ │ │
├──────────────────────────────────────────────────────────────────┤
│ TOTAL │ 2,847 │ ↑ 34%│ $127.00 │ 3 │ │
└──────────────────────────────────────────────────────────────────┘
⚠️ Volume showing unusual growth (+147%)
Investigate: What's driving traffic?
Process
1. Load Product Registry
Read products.yaml for the list of products and their API identifiers:
- PostHog project IDs
- Stripe account/product IDs
- Sentry project slugs
- Domain names
2. Fetch Metrics
For each product, fetch:
Traffic (PostHog API / MCP)
# Via PostHog MCP (preferred - Claude can query directly)
# Or via CLI:
curl -s "https://app.posthog.com/api/projects/${PROJECT_ID}/insights/trend/" \
-H "Authorization: Bearer $POSTHOG_API_KEY" \
-d '{"events": [{"id": "$pageview"}], "date_from": "-7d"}'
# For specific breakdown by referrer:
curl -s "https://app.posthog.com/api/projects/${PROJECT_ID}/insights/trend/" \
-H "Authorization: Bearer $POSTHOG_API_KEY" \
-d '{"events": [{"id": "$pageview"}], "breakdown": "$referrer", "date_from": "-7d"}'
Revenue (Stripe API)
# Requires STRIPE_SECRET_KEY env var
stripe balance_transactions list --created[gte]=$LAST_WEEK --limit=100
# Or for specific product revenue:
stripe invoices list --created[gte]=$LAST_WEEK --status=paid
Errors (Sentry API)
# Requires SENTRY_AUTH_TOKEN env var
curl -s "https://sentry.io/api/0/projects/${ORG}/${PROJECT}/stats/" \
-H "Authorization: Bearer $SENTRY_AUTH_TOKEN"
3. Calculate Deltas
Compare this week vs last week:
- ↑ = increase > 5%
- ↓ = decrease > 5%
- → = stable (within 5%)
- ⚠️ SIGNAL = change > 50% (investigate!)
4. Display Results
Output formatted table to terminal.
Optional: --html flag exports to ~/dashboard.html for browser viewing.
Product Registry
Edit ~/.claude/skills/dashboard/products.yaml to configure products:
products:
- name: Volume
domain: volume.app
posthog_project_id: 12345 # Changed from vercel_project_id
stripe_product_id: prod_xxx
sentry_project: volume
- name: Heartbeat
domain: heartbeat.app
posthog_project_id: 12345
stripe_product_id: prod_yyy
sentry_project: heartbeat
# ... more products
Required Environment Variables
# PostHog - for traffic analytics (preferred)
POSTHOG_API_KEY=phx_xxx
POSTHOG_PROJECT_ID=12345
# Stripe - for revenue
STRIPE_SECRET_KEY=sk_live_xxx
# Sentry - for errors (optional)
SENTRY_AUTH_TOKEN=xxx
SENTRY_ORG=mistystep
Note: Vercel Analytics is NOT used because it lacks CLI/API access. PostHog provides equivalent traffic data with MCP integration.
Usage
# Weekly check (terminal output)
/dashboard
# Export to HTML for browser
/dashboard --html
# Check specific product only
/dashboard volume
When to Use
- Weekly ritual: Every Monday, run
/dashboardto spot traction - After launch: Check if announcement drove traffic
- Investigating issues: See if errors spiked
Traction Signals
The dashboard flags products with >50% change as potential traction signals.
When you see ⚠️ SIGNAL:
- Investigate the source (referrer data)
- Is it sustainable or a one-time spike?
- If sustainable, consider
/double-down
Fallback: Browser Automation
If APIs aren't configured, fall back to browser automation:
- Open PostHog dashboard in Chrome
- Navigate to each project's analytics
- Screenshot or extract numbers
- Repeat for Stripe and Sentry dashboards
This is slower but works without API setup.
Related Skills
/observability- Full monitoring setup (Sentry, PostHog, etc.)/marketing-status- Marketing-focused metrics with PostHog MCP/stripe- Stripe integration audit/double-down- What to do when traction appears (future skill)