From web-analytics
Fetches web analytics from Umami (primary) and GA4 (fallback), runs parallel analysis agents, and delivers actionable traffic insights via console, email, or Slack. Three tiers: mini (30s), medium (2min), full (5min).
How this skill is triggered — by the user, by Claude, or both
Slash command
/web-analytics:web-analytics [mini|medium|full] [--site=name] [--period=7d] [--email] [--slack][mini|medium|full] [--site=name] [--period=7d] [--email] [--slack]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Orchestrates a team of specialist agents to deliver business-grade analytics insights
Orchestrates a team of specialist agents to deliver business-grade analytics insights across your entire site portfolio. Not a dashboard replacement — a push-based analytics team that surfaces what matters.
This skill routes analytics requests to the right combination of specialist agents based on the requested tier, compiles their outputs into a cohesive narrative, and delivers via console, email, or Slack.
Architecture: Orchestrator (this skill) → Data Collector → Specialist Agents (parallel) → Reporter
~/.env (UMAMI_PASSWORD for the admin user)${CLAUDE_SKILL_DIR}/references/site-registry.md/email skill working/slack skill workingThe skill uses direct Umami REST API calls (more reliable than MCP):
# Get auth token
TOKEN=$(curl -s "https://analytics.intentsolutions.io/api/auth/login" \
-X POST -H "Content-Type: application/json" \
-d '{"username":"admin","password":"'"$UMAMI_PASSWORD"'"}' | \
python3 -c "import sys,json; print(json.load(sys.stdin).get('token',''))")
# Get stats (uses epoch ms, compare=prev for prior period)
curl -s "https://analytics.intentsolutions.io/api/websites/{SITE_ID}/stats?startAt={START_MS}&endAt={END_MS}&compare=prev" \
-H "Authorization: Bearer $TOKEN"
# Get active visitors
curl -s "https://analytics.intentsolutions.io/api/websites/{SITE_ID}/active" \
-H "Authorization: Bearer $TOKEN"
# Get daily pageviews
curl -s "https://analytics.intentsolutions.io/api/websites/{SITE_ID}/pageviews?startAt={START_MS}&endAt={END_MS}&unit=day&timezone=America%2FNew_York" \
-H "Authorization: Bearer $TOKEN"
Extract from $ARGUMENTS or conversation context:
| Parameter | Default | Options |
|---|---|---|
| Tier | mini | mini, medium, full |
| Site | all | Site name from registry, or all |
| Period | 7d | today, yesterday, 7d, 30d, mtd, qtd |
| Delivery | console | --email, --slack, --all |
| Compare | auto | Previous equivalent period |
Examples:
/analytics → mini tier, all sites, 7d, console/analytics medium --site=tonsofskills → medium tier, one site, 7d, console/analytics full --period=30d --email → full tier, all sites, 30d, email deliveryhow's my traffic today? → mini tier, all sites, today, consoleRead these reference files for context:
${CLAUDE_SKILL_DIR}/references/site-registry.md — site config, baselines, thresholds${CLAUDE_SKILL_DIR}/references/mcp-tool-reference.md — MCP tool signatures${CLAUDE_SKILL_DIR}/references/reporting-tiers.md — output format specs (medium/full tiers)${CLAUDE_SKILL_DIR}/references/interpretation-guide.md — advisory voice standardsFor mini tier, handle data collection inline to minimize latency:
~/.env to get UMAMI_PASSWORD, then get auth token via curldate -d "2026-04-30" +%s then append 000)/api/websites/{ID}/stats?startAt=...&endAt=...&compare=prev for aggregate metrics/api/websites/{ID}/active for real-time visitor countcomparison block returned by get_stats## Analytics Pulse — {date}
**Portfolio:** {total_visitors} visitors across {n} sites ({+/-n%} vs prior {period})
| Site | Visitors | Pageviews | Bounce | Trend |
|------|----------|-----------|--------|-------|
| {site} | {n} | {n} | {n%} | {↑↓→ n%} |
**Top Signal:** {most notable change across all sites}
**Active Now:** {n} visitors
Keep it under 15 lines. No analysis, just the numbers and one signal.
Launch these agents using the Agent tool with subagent_type:
Phase A — Data Collection:
data-collector agent with instructions:
${CLAUDE_SKILL_DIR}/references/mcp-tool-reference.md${CLAUDE_SKILL_DIR}/references/site-registry.mdPhase B — Parallel Analysis (after data returns):
2. Spawn traffic-intelligence agent with data-collector output
3. Spawn content-seo agent with data-collector output (if available)
4. Spawn anomaly-detector agent with data-collector output (if available)
Phase C — Compilation:
5. Spawn reporting-narrative agent with all specialist outputs
Phase A — Data Collection:
data-collector agent — request ALL data types including events, tech, geoPhase B — Parallel Analysis: 2. Spawn ALL specialist agents in parallel:
traffic-intelligence — channel/source analysiscontent-seo — page performanceanomaly-detector — spike/drop detectionconversion-funnel — event/goal analysisaudience-segmentation — cohort/geo analysisPhase C — Verification:
3. Spawn verification-agent with all specialist outputs — adversarial quality check
Phase D — Compilation:
4. Spawn reporting-narrative agent with all outputs + verification notes
Console (default): Display the narrative report directly.
Email (--email): Invoke the /email skill with:
Slack (--slack): Invoke the /slack skill with:
All (--all): Console + email + Slack.
For full-tier reports, spawn the memory-agent to:
| Agent | File | Tier | Purpose |
|---|---|---|---|
| data-collector | ${CLAUDE_SKILL_DIR}/agents/data-collector.md | All | MCP data fetching |
| traffic-intelligence | ${CLAUDE_SKILL_DIR}/agents/traffic-intelligence.md | Medium+ | Source attribution |
| content-seo | ${CLAUDE_SKILL_DIR}/agents/content-seo.md | Medium+ | Page performance |
| anomaly-detector | ${CLAUDE_SKILL_DIR}/agents/anomaly-detector.md | Medium+ | Spike/drop detection |
| conversion-funnel | ${CLAUDE_SKILL_DIR}/agents/conversion-funnel.md | Full | Event/goal analysis |
| audience-segmentation | ${CLAUDE_SKILL_DIR}/agents/audience-segmentation.md | Full | Cohort analysis |
| verification-agent | ${CLAUDE_SKILL_DIR}/agents/verification-agent.md | Full | Output quality check |
| reporting-narrative | ${CLAUDE_SKILL_DIR}/agents/reporting-narrative.md | Medium+ | Narrative compilation |
| memory-agent | ${CLAUDE_SKILL_DIR}/agents/memory-agent.md | Full | Rolling context |
| Issue | Resolution |
|---|---|
| "Umami MCP not connected" | Run /mcp to check server status. Ensure umami-analytics is in settings.json |
| Empty data for a site | Verify site ID in site-registry.md matches Umami. Run mcp__umami__get_websites to list. If all sites show zero, the tracker <script> likely isn't installed on the site (see site-registry per-site repo paths). |
| Slow response (>5min) | Switch to lower tier. Mini tier bypasses all subagents. |
| Email/Slack delivery fails | Test /email and /slack independently first |
| Stale baselines | Run /analytics full to trigger memory-agent baseline update |
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin web-analyticsMonitors PostHog web traffic for per-channel session volume shifts, attribution breakage, and landing-page health issues, filing reports for validated divergences.
Analyzes Google Analytics data to review website performance, identify traffic patterns, and suggest data-driven improvements. Useful for metrics, conversion rates, and user behavior analysis.
Analyzes Google Analytics 4 data to review website performance, traffic patterns, bounce rates, and conversions. Generates actionable reports including SEO daily reports with organic KPIs, anomaly detection, and prioritized recommendations.