build-until-pass
Use when a build, typecheck, lint, or test command is failing and you want the agent to drive it to green on its own — run the…
Analyze Google Analytics 4 data — review website performance, identify traffic patterns, diagnose high-bounce pages, compare time periods, and suggest data-driven improvements. Use when the user asks about analytics, website metrics, traffic analysis, conversion rates, user
$ npx -y skills add lichamnesia/lich-skills --skill google-analytics --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/google-analyticsContext preview
The summary Claude sees to decide when to auto-load this skill.
Analyze Google Analytics 4 data — review website performance, identify traffic patterns, diagnose high-bounce pages, compare time periods, and suggest data-driven improvements. Use when the user asks about analytics, website metrics, traffic analysis, conversion rates, user
name: google-analytics description: Analyze Google Analytics 4 data — review website performance, identify traffic patterns, diagnose high-bounce pages, compare time periods, and suggest data-driven improvements. Use when the user asks about analytics, website metrics, traffic analysis, conversion rates, user behavior, or performance optimization.
Pull GA4 data via the Data API and turn it into actionable, prioritized recommendations. Scripts are **TypeScript** (run with [Bun](https://bun.sh) or `npx tsx`).
export GOOGLE_ANALYTICS_PROPERTY_ID="YOUR_PROPERTY_ID_HERE" # numeric, not the G- id export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"
Or copy [`.env.example`](.env.example) → `.env` (Bun auto-loads `.env`; under `tsx`, export the vars instead). Full service-account walkthrough is inside `.env.example`.
**Never commit the JSON key or `.env`.** Store the key outside the repo; grant the service account only the **Viewer** role on the GA4 property.
cd skills/google-analytics/scripts bun install # or: npm install
The only runtime dep is `@google-analytics/data` (official Google client, fully typed).
Point it at **one property** and get a complete, opinionated organic-search report — zero config beyond credentials. This is the SEO-expert default template.
bun run daily-report.ts --property 123456789 # one property → one report bun run daily-report.ts # uses GOOGLE_ANALYTICS_PROPERTY_ID bun run daily-report.ts --format json --output today.json
Default template (in order): **Organic KPIs** (rolling 28d vs prior 28d — the Search-Console 4-week-block convention that removes day-of-week skew) · **daily anomaly check** (yesterday vs *same weekday* last week, flags drops ≥ 25%) · **organic trend** sparkline · **top organic landing pages** (the SEO money view) · **by search engine** · **by country** · **by device** (mobile-first) · **auto-generated prioritized recommendations**. Everything is filtered to `sessionDefaultChannelGroup = "Organic Search"`.
Flags: `--property <id>`, `--days <n>` (default 28), `--channel <name>` (default `"Organic Search"`), `--anomaly-threshold <pct>` (default 25), `--format md|json` (default md), `--output FILE`, `--help`. Writes `seo-daily-<date>.md` by default.
It auto-detects whether the property uses GA4's `conversions` or the newer `keyEvents` metric, and any single failing sub-query degrades gracefully instead of aborting the report.
> **GA4 limitation:** GA4 has no keyword / impression / CTR / average-position data — that lives in **Google Search Console** (a different API). This report covers the organic *behavior* GA4 owns; pair with GSC for the query side.
Thin wrapper over `runReport`. Any metrics × dimensions combo.
# Last 30 days of sessions + users (JSON) bun run ga-client.ts --days 30 --metrics sessions,users # Top pages by views, table output bun run ga-client.ts --days 7 --metrics screenPageViews \ --dimensions pagePath --order-by screenPageViews --limit 20 --format table # Specific window, filtered by country bun run ga-client.ts --start 2026-01-01 --end 2026-01-31 \ --metrics sessions,bounceRate --dimensions country --filter "country:United States"
Flags: `--days N` | `--start --end` (YYYY-MM-DD or `NdaysAgo`/`yesterday`), `--metrics` (required, comma-sep), `--dimensions`, `--limit` (default 10), `--order-by` (prefix `-` desc / `+` asc), `--filter "field:value"`, `--format json|table`, `--output FILE`.
Pre-built analyses that return metrics **plus** prioritized recommendations.
bun run analyze.ts --analysis-type seo --days 28 # organic-only KPIs + top landing pages bun run analyze.ts --analysis-type overview --days 30 # current vs previous period bun run analyze.ts --analysis-type sources --days 30 # traffic sources + optimizations bun run analyze.ts --analysis-type content --days 30 # high-bounce pages + diagnosis (all channels) bun run analyze.ts --analysis-type devices --days 30 # mobile vs desktop gap (all channels)
`--output FILE` writes JSON to disk instead of stdout. `--channel <name>` overrides the organic channel group for the `seo` cut.
**Which report do I actually need?** For SEO, reach for `daily-report.ts` first and `--analysis-type seo` for a quick organic snapshot. `overview` / `sources` are useful general cuts. `content` and `devices` are **all-channel** (not organic-only) and `content` keys off `bounceRate` (a de-emphasized GA4 metric) — keep them for general GA use, but for SEO the daily report's organic-filtered device/landing cuts supersede them.
> No Bun? Swap `bun run X.ts` → `npx tsx X.ts` everywhere (and `export` the env vars, since tsx won't read `.env`).
When the user asks an analytics question:
1. **Pick the script** — a specific metric/dimension question → `ga-client.ts`; a "how are we doing / what should we fix" question → `analyze.ts`. 2. **Run it**, capture the JSON. 3. **Interpret** — surface
Personal skill collection for Claude Code, Gemini CLI, and OpenAI Codex — by @LichAmnesia. Telegraph-style, opinionated, no filler. Engineering judgment skills plus high-leverage utility tools. 中文版:README-zh.md
Use when a build, typecheck, lint, or test command is failing and you want the agent to drive it to green on its own — run the…
Use when debugging any non-trivial bug — wrong output, crash, flaky test, performance regression, or "it works locally but not in…
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web…
Use BEFORE any spec, plan, or code exists — the Stage 0 gate that decides whether a project should start at all. NO-GO is the…
Generate or edit images with Google's Nano Banana 2 (`gemini-3.1-flash-image-preview`). Use when the user asks to generate an…
Use at the START of any task, or whenever you are unsure which lich-skill applies. The router for this collection — it maps every…