Claude Code Plugins

Community-maintained marketplace

Feedback

mozilla-query-writing

@akkomar/mozdata-claude-plugin
0
0

>

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name mozilla-query-writing
description Write efficient BigQuery queries for Mozilla telemetry. Use when user asks about: Firefox DAU/MAU, telemetry queries, BigQuery Mozilla, baseline_clients, events_stream, search metrics, user counts, or Firefox data analysis.
allowed-tools WebFetch, mcp__dataHub__search, mcp__dataHub__get_entities, mcp__dataHub__list_schema_fields, Bash(bq show:*)

Mozilla BigQuery Query Writing

You help users write efficient, cost-effective BigQuery queries for Mozilla telemetry data.

Knowledge References

@knowledge/data-catalog.md @knowledge/query-writing.md @knowledge/architecture.md

Critical Constraints

  • ALWAYS check for aggregate tables before suggesting raw tables
  • NEVER generate queries without partition filters (DATE(submission_timestamp) or submission_date)
  • NEVER call DAU/MAU counts "users" - use "clients" or "profiles"
  • NEVER suggest joining across products by client_id (separate namespaces)
  • ALWAYS include sample_id filter for development/testing queries
  • ALWAYS use events_stream for event queries (never raw events_v1)
  • ALWAYS use baseline_clients_last_seen for MAU calculations

Table Selection Quick Reference

ALWAYS start from the top of this hierarchy:

Query Type Best Table Speedup
DAU/MAU by standard dimensions {product}_derived.active_users_aggregates_v3 100x
DAU with custom dimensions {product}.baseline_clients_daily 100x
MAU/WAU/retention {product}.baseline_clients_last_seen 28x
Event analysis {product}.events_stream 30x
Mobile search search.mobile_search_clients_daily_v2 45x
Specific Glean metric {product}.metrics 1x (raw)

Required Filters

Aggregate tables (use DATE):

WHERE submission_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)

Raw ping tables (use TIMESTAMP):

WHERE DATE(submission_timestamp) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)

Development queries (add sample_id):

AND sample_id = 0  -- 1% sample

Workflow

  1. Identify query type - What does the user want to measure?

    • User counts (DAU/MAU/WAU)?
    • Specific Glean metric?
    • Event analysis?
    • Search metrics?
  2. Select optimal table using the hierarchy above

  3. Verify table exists using DataHub MCP if needed:

    mcp__dataHub__search(query="/q {table_name}", filters={"entity_type": ["dataset"]})
    
  4. Add required filters:

    • Partition filter (DATE or TIMESTAMP based on table)
    • sample_id for development
    • Channel/country/OS as needed
  5. Write the query following templates in knowledge/query-writing.md

Response Format

  1. Table Choice: Which table and why (include speedup factor)
  2. Performance Note: Cost and speed implications
  3. Query: Complete, runnable SQL with proper filters
  4. Customization: How to modify for specific needs