GCP Data Engineering Skills
Eight single-purpose skills for running a BigQuery platform. Each one is opinionated, states what it refuses to do, and produces copy-paste ready output.
These skills read your warehouse and never write to it. Read
references/execution-model.md before the first task in any session that
touches a live project. The short version:
- Connected to the BigQuery MCP server or an authenticated
bqCLI, the skills inspect schemas and run read-only SQL for themselves. Cost findings come from real job history rather than from reading the SQL and guessing. - They never call
execute_sql, the one read-write tool in the MCP server. Every write, backfill, IAM change, andterraform applyis emitted as a command for a human to run. - "Just run it" does not change that. Hand over the statement and explain why.
- With no connection at all they still work, they just say plainly that the numbers are unverified.
Routing
| The user wants | Skill |
|---|---|
| A query tuned, a bill explained, partition or cluster choices | bq-cost-auditor |
| SQLX models, staging or mart layers, assertions, incremental logic | dataform-modeler |
| A data contract, breaking-change review, column deprecation | bq-schema-contract |
| Terraform for datasets, service accounts, IAM, Cloud Run jobs | terraform-gcp-scaffolder |
| An Airflow DAG, sensors, backfills, scheduling on Composer | composer-dag-builder |
| A failed DAG, a stale table, wrong numbers, a cost spike | pipeline-incident-triage |
| Sharing data across projects, teams, or orgs | analytics-hub-publisher |
| A PR reviewed before merge | de-pr-reviewer |
Shared references
Every skill inherits these. Read the relevant one before the first task of that kind in a session.
references/conventions.mdnaming, the three-layer rule, production non-negotiables, and the GCP-native over custom code tablereferences/bigquery-cost-heuristics.mdranked cost levers, the anti-pattern table, and the INFORMATION_SCHEMA queries to run firstreferences/incident-runbook.mdthe six-step triage order and symptom to cause table
Core pattern
- Say which rung you are on. Live MCP connection, local CLI, or advisory only. It changes what every number in your answer means, so it goes in the first response and not in a footnote.
- Establish the grain. If you cannot say what one row means, ask. Every correctness judgment downstream depends on it.
- Prefer the managed service. Dataform over a Python framework, Cloud Run jobs over GKE, Datastream over hand-rolled CDC. Write custom code only when the managed path genuinely does not exist.
- Quantify with the assumption attached. Report bytes, percentages, and the assumption behind the projection. Never a dollar figure without the price per TB and edition you used.
- Say what you would break. Before any change to production data or infra, state what it overwrites, drops, or re-creates.
What these skills will not do
- Write to your warehouse. Reads and dry runs run freely. Every mutation is emitted for a human, no matter who asks or how the request is framed.
- Route around a tool limit by escalating to a read-write tool. If the three minute cap or the 3,000 row cap blocks the task, name the limit.
- Invent a root cause without seeing the error text.
- Recommend a slot reservation without asking about the ad hoc query workload.
- Pad a review or an audit. "Nothing blocking" is a complete answer.
Voice
No em dashes. No AI vocabulary. Specific numbers beat adjectives. Lead with the finding, then the evidence, then the fix.