| name | analyzing-data |
| description | Queries data warehouse and answers business questions about data. Handles questions requiring database/warehouse queries including "who uses X", "how many Y", "show me Z", "find customers", "what is the count", data lookups, metrics, trends, or SQL analysis. |
| hooks | {"PreToolUse":[{"matcher":"Bash","hooks":[{"type":"command","command":"uv run ${CLAUDE_PLUGIN_ROOT}/skills/analyzing-data/scripts/cli.py ensure","once":true}]}],"Stop":[{"hooks":[{"type":"command","command":"uv run ${CLAUDE_PLUGIN_ROOT}/skills/analyzing-data/scripts/cli.py stop"}]}]} |
Data Analysis
Answer business questions by querying the data warehouse. The kernel starts automatically on first use.
Prerequisites
uv must be installed:
curl -LsSf https://astral.sh/uv/install.sh | sh
Scripts are located relative to this skill file.
MANDATORY FIRST STEP
Before any other action, check for cached patterns:
uv run scripts/cli.py pattern lookup "<user's question>"
This is NON-NEGOTIABLE. Patterns contain proven strategies that save time and avoid failed queries.
Workflow
Analysis Progress:
- [ ] Step 1: pattern lookup (check for cached strategy)
- [ ] Step 2: concept lookup (check for known tables)
- [ ] Step 3: Search codebase for table definitions (Grep)
- [ ] Step 4: Read SQL file to get table/column names
- [ ] Step 5: Execute query via kernel (run_sql)
- [ ] Step 6: learn_concept (ALWAYS before presenting results)
- [ ] Step 7: learn_pattern (ALWAYS if discovery required)
- [ ] Step 8: record_pattern_outcome (if you used a pattern in Step 1)
- [ ] Step 9: Present findings to user
CLI Commands
Kernel Management
uv run scripts/cli.py start
uv run scripts/cli.py exec "..."
uv run scripts/cli.py status
uv run scripts/cli.py restart
uv run scripts/cli.py stop
uv run scripts/cli.py install plotly
Concept Cache (concept -> table mappings)
uv run scripts/cli.py concept lookup customers
uv run scripts/cli.py concept learn customers HQ.MART_CUST.CURRENT_ASTRO_CUSTS -k ACCT_ID
uv run scripts/cli.py concept list
uv run scripts/cli.py concept import -p /path/to/warehouse.md
Pattern Cache (query strategies)
uv run scripts/cli.py pattern lookup "who uses operator X"
uv run scripts/cli.py pattern learn operator_usage \
-q "who uses X operator" \
-q "which customers use X" \
-s "1. Query TASK_RUNS for operator_class" \
-s "2. Join with ORGS on org_id" \
-t "HQ.MODEL_ASTRO.TASK_RUNS" \
-t "HQ.MODEL_ASTRO.ORGANIZATIONS" \
-g "TASK_RUNS is huge - always filter by date"
uv run scripts/cli.py pattern record operator_usage --success
uv run scripts/cli.py pattern list
uv run scripts/cli.py pattern delete operator_usage
Table Schema Cache
uv run scripts/cli.py table lookup HQ.MART_CUST.CURRENT_ASTRO_CUSTS
uv run scripts/cli.py table cache DB.SCHEMA.TABLE -c '[{"name":"id","type":"INT"}]'
uv run scripts/cli.py table list
uv run scripts/cli.py table delete DB.SCHEMA.TABLE
Cache Management
uv run scripts/cli.py cache status
uv run scripts/cli.py cache clear
uv run scripts/cli.py cache clear --stale-only
Quick Start Example
uv run scripts/cli.py pattern lookup "how many customers"
uv run scripts/cli.py concept lookup customers
uv run scripts/cli.py exec "df = run_sql('SELECT COUNT(*) FROM HQ.MART_CUST.CURRENT_ASTRO_CUSTS')"
uv run scripts/cli.py exec "print(df)"
uv run scripts/cli.py concept learn customers HQ.MART_CUST.CURRENT_ASTRO_CUSTS -k ACCT_ID
Available Functions in Kernel
Once kernel starts, these are available:
| Function | Description |
|---|
run_sql(query, limit=100) | Execute SQL, return Polars DataFrame |
run_sql_pandas(query, limit=100) | Execute SQL, return Pandas DataFrame |
pl | Polars library (imported) |
pd | Pandas library (imported) |
Table Discovery via Codebase
If concept/pattern cache miss, search the codebase:
Grep pattern="<concept>" glob="**/*.sql"
| Repo Type | Where to Look |
|---|
| Gusty | dags/declarative/04_metric/, 06_reporting/, 05_mart/ |
| dbt | models/marts/, models/staging/ |
Known Tables Quick Reference
| Concept | Table | Key Column | Date Column |
|---|
| customers | HQ.MART_CUST.CURRENT_ASTRO_CUSTS | ACCT_ID | - |
| organizations | HQ.MODEL_ASTRO.ORGANIZATIONS | ORG_ID | CREATED_TS |
| deployments | HQ.MODEL_ASTRO.DEPLOYMENTS | DEPLOYMENT_ID | CREATED_TS |
| task_runs | HQ.MODEL_ASTRO.TASK_RUNS | - | START_TS |
| dag_runs | HQ.MODEL_ASTRO.DAG_RUNS | - | START_TS |
| users | HQ.MODEL_ASTRO.USERS | USER_ID | - |
| accounts | HQ.MODEL_CRM.SF_ACCOUNTS | ACCT_ID | - |
Large tables (always filter by date): TASK_RUNS (6B rows), DAG_RUNS (500M rows)
Query Tips
- Use LIMIT during exploration
- Filter early with WHERE clauses
- Prefer pre-aggregated tables (
METRICS_*, MART_*, AGG_*)
- For 100M+ row tables: no JOINs or GROUP BY on first query
Reference