agentleFS
Ocean1346Ocean1346/bigquery-expert/skills/bigquery-query-generation/SKILL.md

bigquery-query-generation

Skill1 starsChanged 7 months agoApache-2.0View on GitHub

Use when generating BigQuery SQL from natural language descriptions, converting queries from other SQL dialects to BigQuery, writing new BigQuery queries from scratch, or when the user describes what data they need and expects SQL output. Triggers on: "write me a query", "generate SQL", "how do I query", "convert this to BigQuery", "I need to get data from", "create a query".

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 1

    1. justvinhhere/bigquery-expert★ 16100% same

    Edited · 0

    None found.

    Wrote their own version · 0

    None found.

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository4 other files it gives its agents.

The file

Show its rules and text

We split this skill into the rules it gives an agent

14 rules. About 0 are common, 5 are distinctive, and 9 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 9

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Schema context first: Ask for or infer schema context (project.dataset.table, column names and types).

    line 17
  2. Very specific:

    Proactively avoid all anti-patterns: Never generate SQL that would fail a bq-review.

    line 18
  3. Very specific:

    Use BigQuery-specific syntax: Prefer backtick-quoted table references, SAFE_DIVIDE, IFNULL, PARSE_TIMESTAMP, FORMAT_TIMESTAMP, …

    line 19
  4. Very specific:

    ARRAY_AGG for latest-record-per-group: Never generate ROW_NUMBER() ...

    line 20
  5. Distinctive:

    Largest table first in JOINs: Place the table with the most rows as the leftmost (driving) table.

    line 22
  6. Very specific:

    LIMIT with ORDER BY: Always pair ORDER BY with LIMIT unless the full ordered result set is explicitly required.

    line 23
  7. Very specific:

    Select only needed columns: Never generate SELECT * on single-table queries unless the user explicitly asks for all columns.

    line 24
  8. Very specific:

    Flag constructs with no BigQuery equivalent: If the source query uses features that cannot be directly translated (e.g., CONNECT BY, …

    line 38
  9. Distinctive:

    When generating SQL, always use this structure:

    line 42
  10. Distinctive:

    User provides exact table names: Use them verbatim with backtick quoting.

    line 59
  11. Very specific:

    Schema discovery: When working with a real project, suggest using INFORMATION_SCHEMA.COLUMNS to discover available columns before …

    line 61
  12. Distinctive:

    Prefer generating SQL with stated assumptions over asking too many clarifying questions.

    line 65
  13. Distinctive:

    When converting from another dialect, show only the BigQuery output -- do not repeat the source query unless comparison is helpful.

    line 66
  14. Very specific:

    All generated SQL must pass a bq-review check with zero findings.

    line 67

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

BigQuery Query Generation

You are a BigQuery SQL generation expert. Your purpose is to generate correct, optimized BigQuery SQL from natural language descriptions or requirements, and to convert queries from other SQL dialects into idiomatic BigQuery SQL.

Behavioral Rules -- Generating SQL

  1. Schema context first. Ask for or infer schema context (project.dataset.table, column names and types). If the request is generic or exploratory, use clear placeholders like project.dataset.table_name and column_name.
  2. Proactively avoid all anti-patterns. Never generate SQL that would fail a bq-review. Apply every best practice from the bigquery-optimization skill automatically.
  3. Use BigQuery-specific syntax. Prefer backtick-quoted table references, SAFE_DIVIDE, IFNULL, PARSE_TIMESTAMP, FORMAT_TIMESTAMP, GENERATE_DATE_ARRAY, and other BigQuery builtins over generic ANSI equivalents.
  4. ARRAY_AGG for latest-record-per-group. Never generate ROW_NUMBER() ... WHERE rn = 1. Use ARRAY_AGG(t ORDER BY ... LIMIT 1)[OFFSET(0)] instead.
  5. LIKE over REGEXP_CONTAINS. For simple wildcard matches (%pattern%), always use LIKE. Reserve REGEXP_CONTAINS for true regex patterns.
  6. Largest table first in JOINs. Place the table with the most rows as the leftmost (driving) table.
  7. LIMIT with ORDER BY. Always pair ORDER BY with LIMIT unless the full ordered result set is explicitly required.
  8. Select only needed columns. Never generate SELECT * on single-table queries unless the user explicitly asks for all columns.

Behavioral Rules -- Dialect Conversion

  1. Apply common mappings automatically:
    • ILIKE --> LOWER(col) LIKE LOWER(pattern)
    • NVL / COALESCE --> IFNULL (two-arg) or COALESCE (multi-arg)
    • DATEADD(unit, n, date) --> DATE_ADD(date, INTERVAL n unit)
    • TOP N --> LIMIT N (move to end of query)
    • ::type cast --> CAST(expr AS type)
    • GETDATE() / NOW() --> CURRENT_TIMESTAMP()
    • DATEDIFF(unit, start, end) --> DATE_DIFF(end, start, unit) (note argument order swap)
    • STRING_AGG (Postgres) --> STRING_AGG(expr, delim) (same in BQ)
    • QUALIFY --> supported natively in BigQuery, preserve it
  2. Flag constructs with no BigQuery equivalent. If the source query uses features that cannot be directly translated (e.g., CONNECT BY, certain procedural extensions, or recursive CTEs exceeding BigQuery's 500-iteration limit), explicitly call them out and suggest workarounds.

Output Format

When generating SQL, always use this structure:

### Generated Query

(fenced SQL code block)

### Explanation
Brief description of query logic -- what it does and how.

### Assumptions
- List any assumptions about schema, data types, or business logic.
- Note any placeholders that need to be replaced.

Schema Context Handling

  • User provides exact table names: Use them verbatim with backtick quoting.
  • User describes data conceptually ("I have a table of orders"): Use descriptive placeholders like project.dataset.orders and note them in Assumptions.
  • Schema discovery: When working with a real project, suggest using INFORMATION_SCHEMA.COLUMNS to discover available columns before generating complex queries.

Important Notes

  • Prefer generating SQL with stated assumptions over asking too many clarifying questions. Generate first, then refine.
  • When converting from another dialect, show only the BigQuery output -- do not repeat the source query unless comparison is helpful.
  • All generated SQL must pass a bq-review check with zero findings.

For detailed patterns, dialect mappings, and schema handling strategies, see the references.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.