К основному содержанию
скилл GitHub Copilot официальный · GitHub

bigquery-pipeline-audit — скилл для GitHub Copilot: аудит BigQuery

Проверяет Python-пайплайны для BigQuery на риск лишних затрат, повторных записей и незаметных сбоев. Пригодится перед запуском или разбором существующего кода.

Установить в GitHub Copilot · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add github/awesome-copilot --skill bigquery-pipeline-audit
Открыть на GitHub

Что делает bigquery-pipeline-audit

Скилл проходит по запросам и другим вызовам, оценивает возможное число BigQuery jobs и проверяет ограничение maximum_bytes_billed. Ищет запросы в циклах, небезопасные режимы запуска, неограниченные бэкфиллы и чтение актуальных таблиц при моделировании прошлых дат. Отчёт привязывает замечания к функциям и строкам кода.

Также он проверяет фильтры партиций, SELECT *, ключи соединений и способ записи результатов. Для повторных запусков ищет дедупликацию или MERGE, а для сбоев — исключения, логи заданий и сводку запуска. В ответе будут причины PASS или FAIL и список исправлений по риску.

Устанавливайте его, если нужно проверить Python-код с BigQuery перед выполнением или оценить уже существующий пайплайн. Это аудит по заданным критериям: предложенные ограничения и ключи нужно сверить с логикой проекта.

Какие задачи решает

  • найти BigQuery-запросы, которые запускаются в цикле
  • проверить, задан ли лимит maximum_bytes_billed
  • выявить повторные записи при перезапуске пайплайна
  • оценить риски бэкфилла по датам и сущностям
  • проверить, останутся ли детали сбоя в логах

Примеры запросов агенту

  • Проверь этот Python-пайплайн для BigQuery на риск лишних затрат и укажи места в коде.
  • Найди запросы в циклах и предложи минимальные исправления для безопасного бэкфилла.
  • Проверь, можно ли повторно запустить этот скрипт без дублирования строк.

Как установить bigquery-pipeline-audit

1Через Skills CLI (Vercel)

npx skills add github/awesome-copilot --skill bigquery-pipeline-audit

2GitHub CLI

gh skill install github/awesome-copilot bigquery-pipeline-audit

3Вручную: положить файлы

.github/skills/bigquery-pipeline-audit/SKILL.md

Из того же набора554

Весь набор →
git-commit официальный github Скилл разбирает изменения Git, выбирает связанные файлы и создаёт коммит в формате Conventional Commits. Пригодится, когда нужно закоммитить одну или несколько логических частей изменений. GitHub Copilot 47 165установок excalidraw-diagram-generator официальный github Скилл превращает описание на обычном языке в диаграмму Excalidraw. Подойдёт, когда нужно показать процесс, связи между объектами или устройство системы. GitHub Copilot 31 639установок multi-stage-dockerfile официальный github Скилл помогает создавать многоэтапные Dockerfile для разных языков и фреймворков. Пригодится, когда важны размер и состав runtime-образа. GitHub Copilot 29 688установок documentation-writer официальный github Скилл для создания технической документации по фреймворку Diátaxis: туториалы, гайды, справки и объяснения. Предлагает структуру перед написанием. GitHub Copilot 27 757установок prd официальный github Собирает из идеи структурированный PRD с пользовательскими историями, техническими требованиями и рисками. Подходит для планирования новых функций, в том числе с AI. GitHub Copilot 24 035установок refactor официальный github Скилл помогает менять структуру кода без изменения внешнего поведения. Подойдёт для постепенной уборки сложных функций, дублирования и кодовых запахов. GitHub Copilot 22 321установок java-springboot официальный github Задаёт практики разработки Spring Boot-приложений: от структуры проекта до тестов и безопасности. Пригодится, когда Copilot пишет или проверяет Java-код. GitHub Copilot 21 272установок create-readme официальный github Скилл изучает проект и создаёт структурированный README.md. Подойдёт, когда документацию нужно собрать по коду и файлам проекта. GitHub Copilot 19 081установок

Похожие

google-analytics-data-api-basics официальный google Скилл подключает работу с отчётными данными Google Analytics через Data API v1beta. Нужен для запросов метрик, измерений и проверки доступа к API. Claude Code Gemini CLI CX Codex 7 364установок xlsx официальный anthropics Работает с табличными файлами: создаёт, читает, правит и преобразует книги. Подходит, когда итогом должен стать файл Excel или другой табличный формат. Claude Code Claude.ai 187 223установок google-agents-cli-observability официальный Google Помогает настроить трассировку и сбор данных о работе ИИ-агентов, включая агентов на ADK. Пригодится, когда нужно разбирать выполнение запросов или наблюдать за агентом после развёртывания. Claude Code CX Codex Cursor +1 509 900установок caveman-evidence-review JuliusBrussee Скилл читает данные Caveman Cloud о расходах LLM, трассах и маршрутизации. Подходит для проверки того, куда уходит бюджет проекта. Claude Code CX Codex Cursor +1 103 500установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. Claude Code CX Codex Cursor +1 102 900установок performance-optimization addyosmani Скилл для агентов ИИ-кодинга: сначала замеряет, потом чинит узкое место — от Core Web Vitals до N+1 запросов и индексов в базе. Claude Code CX Codex Cursor +1 64 500установок supabase официальный supabase Скилл помогает настраивать базу данных, аутентификацию и RLS в Supabase без скрытых дыр в безопасности. CX Codex GP ChatGPT 8установок

Вопросы о bigquery-pipeline-audit

Как установить bigquery-pipeline-audit в GitHub Copilot?

Выполните npx skills add github/awesome-copilot --skill bigquery-pipeline-audit. Также во входе указана команда gh skill install github/awesome-copilot bigquery-pipeline-audit.

Что делает bigquery-pipeline-audit?

Проверяет Python-пайплайны для BigQuery на стоимость запросов, безопасность повторного запуска, качество фильтрации и наблюдаемость. Выдаёт PASS или FAIL с замечаниями по разделам и адресами правок.

Что проверяет скилл при бэкфилле?

Он ищет запросы в циклах по датам или сущностям, проверяет ограничение диапазона и безопасность перезапуска. Для моделирования прошлых дат проверяет, используются ли версии данных, соответствующие этому времени.

Исходный текст

SKILL.md · MIT
---
name: bigquery-pipeline-audit
description: 'Audits Python + BigQuery pipelines for cost safety, idempotency, and production readiness. Returns a structured report with exact patch locations.'
---

# BigQuery Pipeline Audit: Cost, Safety and Production Readiness

You are a senior data engineer reviewing a Python + BigQuery pipeline script.
Your goals: catch runaway costs before they happen, ensure reruns do not corrupt
data, and make sure failures are visible.

Analyze the codebase and respond in the structure below (A to F + Final).
Reference exact function names and line locations. Suggest minimal fixes, not
rewrites.

---

## A) COST EXPOSURE: What will actually get billed?

Locate every BigQuery job trigger (`client.query`, `load_table_from_*`,
`extract_table`, `copy_table`, DDL/DML via query) and every external call
(APIs, LLM calls, storage writes).

For each, answer:
- Is this inside a loop, retry block, or async gather?
- What is the realistic worst-case call count?
- For each `client.query`, is `QueryJobConfig.maximum_bytes_billed` set?
  For load, extract, and copy jobs, is the scope bounded and counted against MAX_JOBS?
- Is the same SQL and params being executed more than once in a single run?
  Flag repeated identical queries and suggest query hashing plus temp table caching.

**Flag immediately if:**
- Any BQ query runs once per date or once per entity in a loop
- Worst-case BQ job count exceeds 20
- `maximum_bytes_billed` is missing on any `client.query` call

---

## B) DRY RUN AND EXECUTION MODES

Verify a `--mode` flag exists with at least `dry_run` and `execute` options.

- `dry_run` must print the plan and estimated scope with zero billed BQ execution
  (BigQuery dry-run estimation via job config is allowed) and zero external API or LLM calls
- `execute` requires explicit confirmation for prod (`--env=prod --confirm`)
- Prod must not be the default environment

If missing, propose a minimal `argparse` patch with safe defaults.

---

## C) BACKFILL AND LOOP DESIGN

**Hard fail if:** the script runs one BQ query per date or per entity in a loop.

Check that date-range backfills use one of:
1. A single set-based query with `GENERATE_DATE_ARRAY`
2. A staging table loaded with all dates then one join query
3. Explicit chunks with a hard `MAX_CHUNKS` cap

Also check:
- Is the date range bounded by default (suggest 14 days max without `--override`)?
- If the script crashes mid-run, is it safe to re-run without double-writing?
- For backdated simulations, verify data is read from time-consistent snapshots
  (`FOR SYSTEM_TIME AS OF`, partitioned as-of tables, or dated snapshot tables).
  Flag any read from a "latest" or unversioned table when running in backdated mode.

Suggest a concrete rewrite if the current approach is row-by-row.

---

## D) QUERY SAFETY AND SCAN SIZE

For each query, check:
- **Partition filter** is on the raw column, not `DATE(ts)`, `CAST(...)`, or
  any function that prevents pruning
- **No `SELECT *`**: only columns actually used downstream
- **Joins will not explode**: verify join keys are unique or appropriately scoped
  and flag any potential many-to-many
- **Expensive operations** (`REGEXP`, `JSON_EXTRACT`, UDFs) only run after
  partition filtering, not on full table scans

Provide a specific SQL fix for any query that fails these checks.

---

## E) SAFE WRITES AND IDEMPOTENCY

Identify every write operation. Flag plain `INSERT`/append with no dedup logic.

Each write should use one of:
1. `MERGE` on a deterministic key (e.g., `entity_id + date + model_version`)
2. Write to a staging table scoped to the run, then swap or merge into final
3. Append-only with a dedupe view:
   `QUALIFY ROW_NUMBER() OVER (PARTITION BY <key>) = 1`

Also check:
- Will a re-run create duplicate rows?
- Is the write disposition (`WRITE_TRUNCATE` vs `WRITE_APPEND`) intentional
  and documented?
- Is `run_id` being used as part of the merge or dedupe key? If so, flag it.
  `run_id` should be stored as a metadata column, not as part of the uniqueness
  key, unless you explicitly want multi-run history.

State the recommended approach and the exact dedup key for this codebase.

---

## F) OBSERVABILITY: Can you debug a failure?

Verify:
- Failures raise exceptions and abort with no silent `except: pass` or warn-only
- Each BQ job logs: job ID, bytes processed or billed when available,
  slot milliseconds, and duration
- A run summary is logged or written at the end containing:
  `run_id, env, mode, date_range, tables written, total BQ jobs, total bytes`
- `run_id` is present and consistent across all log lines

If `run_id` is missing, propose a one-line fix:
`run_id = run_id or datetime.utcnow().strftime('%Y%m%dT%H%M%S')`

---

## Final

**1. PASS / FAIL** with specific reasons per section (A to F).
**2. Patch list** ordered by risk, referencing exact functions to change.
**3. If FAIL: Top 3 cost risks** with a rough worst-case estimate
(e.g., "loop over 90 dates x 3 retries = 270 BQ jobs").

© github · MIT · github/awesome-copilot

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой