claude/skills/looker/SKILL.md
Semantic search over EasyPost's Looker BI instance via MCP tools (mcp__looker__*). Use when: (1) finding what data exists in Looker ('what dashboard shows carrier revenue?', 'which explore has claims data?'); (2) retrieving BigQuery SQL from existing Looker queries to inspect or reuse; (3) discovering available fields/dimensions/measures for an explore; (4) rebuilding or refreshing the Looker index after the instance changes; (5) fetching a specific saved Look by ID.
npx skillsauth add lanej/dotfiles lookerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Semantic search over EasyPost's Looker instance. Search is backed by the local qmd index — no credentials needed. Catalog/auth tools require Looker API credentials (env vars).
search_allUse by default. Searches queries, explores, and dashboards in one call.
mcp__looker__search_all(query, limit?, catalog_dir?)
Returns { queries[], explores[], dashboards[] } — each ranked by cosine similarity.
Score interpretation: ≥ 0.65 = strong match. 0.50–0.65 = related but weaker. < 0.50 = likely noise.
Use when you only need one result type:
mcp__looker__search_queries — Returns full generated BigQuery SQL per query. Use when you need actual SQL to inspect or run.
score, query_id, explore, model, dashboard_titles[], element_titles[], fields[], sources[], generated_sqlmcp__looker__search_explores — Aggregated view per explore. Use for "which explore covers X?" questions.
score, explore, domain, model, n_queries, bq_tables[]mcp__looker__search_dashboards — Search by dashboard title and panel content.
score, dashboard_id, dashboard_title, n_elements, explores[]mcp__looker__search_looks — Search saved Looks by title, explore, and fields.
score, look_id, title, explore, bq_tables[]All search tools accept: query (required), limit (default 5, max 20), catalog_dir (default ~/.looker/catalog).
mcp__looker__get_look(id) — Fetch a saved Look by numeric ID (from the Looker URL: /looks/57 → 57). Returns title, folder, query_id, and URL. Requires credentials.
Run in sequence when the index is missing (tool says "No Looker index found") or after the Looker instance has changed (new explores, dashboards added):
mcp__looker__verify_auth — Confirm API connectivity before crawling.mcp__looker__catalog — Crawl the instance; writes JSONL to ~/.looker/catalog/. Incremental (checkpoint-aware).
folder_id (scope crawl), workers (default 4), out_dir (default ~/.looker/catalog)mcp__looker__enrich — Add BQ table lineage, domain classification, and per-explore markdown for qmd indexing. Annotates with Claude Haiku via Vertex AI.
out_dir → ~/workspace/resources/looker-queries/, dict_dir → ~/workspace/resources/bigquery/domains/, cache_dir → ~/.looker/annotation_cacheno_annotate: true to skip Claude annotation.mcp__looker__index_build — Runs qmd update to refresh the search index. No credentials needed."What dashboard shows carrier revenue?"
→ search_all("carrier revenue") → check dashboards + queries
"Find the SQL for shipment volume by state"
→ search_queries("shipment volume by state") → read generated_sql
"Which explore covers claims data?"
→ search_explores("claims") → check bq_tables and domain
"I need to build a query about X — what fields exist?"
→ search_queries for similar queries → inspect fields[] to see available dimensions/measures
Search returns "No Looker results — run looker enrich and qmd update first" error
→ Catalog exists but embeddings are missing. Check the index_build log for "N unique hashes need vectors". If non-zero, run qmd embed via Bash before searching. Full sequence for a stale index: verify_auth → catalog → enrich → index_build → qmd embed (if "N unique hashes need vectors").
Search returns "No Looker index found" error
→ Index doesn't exist. Run: verify_auth → catalog → enrich → index_build → qmd embed
Search returns no results or low scores → The query didn't match. Rephrase or try a different search term. Do NOT assume the index is stale — the tool now distinguishes "missing index" from "no match" explicitly.
~/.looker/catalog/ # JSONL from catalog crawl
~/.looker/catalog/queries.jsonl
~/.looker/catalog/checkpoint.json
~/.looker/annotation_cache/ # Claude Haiku annotation cache
~/workspace/resources/looker-queries/ # Per-explore markdown (qmd-indexed)
devops
DORA engineering metrics project at ~/src/dora. Load when: querying DORA BigQuery views (deployment frequency, lead time, change failure rate, alerts, review time) from any project; joining against DORA.unified_identity or DORA_clean.* views from any project; running the data pipeline (just refresh, just download-*, just upload-*); making OpenTofu infrastructure changes to DORA tables or views; working with team attribution, team identity, or engineer roster data.
development
Data pipeline architecture patterns and best practices, including medallion/three-layer architecture (Raw/Staging/Enriched or Bronze/Silver/Gold), YAML-based schema management, and ETL workflow patterns. Use when designing or implementing data pipelines, working with data warehouse layers, or managing table schemas in YAML.
data-ai
Delegate research and context-gathering tasks to a sub-agent to protect the primary context window. Use when the user asks to "research X", "look into X", "find out about X", "gather context on X", or any investigative framing where answering requires 2+ searches or multiple sources. Also use proactively before starting substantive work when prior context is unknown. Never run research inline — always delegate.
documentation
--- name: qmd-math description: Math notation conventions for Quarto/EPQ documents rendered via lualatex. Use when: writing or adding a formula, equation, or mathematical expression to a .qmd file; asked about display math, inline math, or LaTeX notation in a QMD/Quarto context; defining a where-clause or variable definitions for an equation; converting prose variable descriptions into structured math notation; fixing math that renders badly in a PDF; using \lvert, \begin{aligned}, \tfrac, \text