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

protobuf-grpc-api-review — скилл для GitHub Copilot: ревью и установка

Проверяет изменения в .proto и gRPC на совместимость форматов, безопасность миграции и качество RPC-контрактов. Подходит для ревью схем и разбора ошибок между версиями.

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

Что делает protobuf-grpc-api-review

Скилл сравнивает старую и новую схемы и оценивает изменения для бинарного protobuf, ProtoJSON и сгенерированных API. Он также учитывает сохранённые сообщения, внешних клиентов и порядок развёртывания. Для каждого затронутого символа проверяет сценарии со старыми и новыми читателями и писателями.

В ревью входят рекомендации по эволюции схемы, миграции и откату, а также список проверок и тестов. Скилл предлагает использовать инструменты проекта, например protoc или Buf, если они доступны, и не выдавать непроверенные проверки за пройденные. Для работы с сервисами и изменениями поведения RPC предусмотрен отдельный разбор контракта gRPC.

Ставьте его, если команда меняет Protobuf-схемы или gRPC API и должна учитывать клиентов разных версий. Без старой схемы, форматов данных и модели развёртывания оценка совместимости будет ограниченной.

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

  • проверить изменение номера или типа поля Protobuf
  • оценить совместимость ProtoJSON после переименования поля
  • найти риски при поэтапном переходе на новую схему
  • проверить RPC-контракт при изменении метода или потоковой передачи
  • составить план миграции и отката для клиентов разных версий

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

  • Проверь этот diff `.proto` на бинарную и JSON-совместимость.
  • Оцени план миграции: сначала новые читатели, затем новые писатели. Какие риски останутся при откате?
  • Проверь изменения gRPC-метода и перечисли нужные тесты для клиентов разных версий.

Как установить protobuf-grpc-api-review

1Через Skills CLI (Vercel)

npx skills add github/awesome-copilot --skill protobuf-grpc-api-review

2GitHub CLI

gh skill install github/awesome-copilot protobuf-grpc-api-review

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

.github/skills/protobuf-grpc-api-review/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установок

Похожие

stripe-best-practices официальный Stripe Рекомендации по интеграции Stripe для Codex: выбор API, настройка подписок, налогов и безопасность ключей. CX Codex GP ChatGPT 36установок stripe-best-practices официальный OpenAI Скилл подсказывает, какие API Stripe выбрать для платежей, подписок, маркетплейса и финансовых счетов. Пригодится при разработке и ревью интеграций. CX Codex GP ChatGPT 36установок chatgpt-app-submission официальный OpenAI Проверяет MCP-сервер ChatGPT Apps и готовит файл для подачи приложения. Пригодится перед ревью, когда нужно собрать подсказки, тесты и замечания. CX Codex GP ChatGPT 29установок uml-and-software-architecture-visualization официальный OpenAI Скилл помогает выбрать нотацию и формат для UML-диаграмм, схем архитектуры, процессов и данных. Подключайте его, когда нужно описать структуру или поведение системы. CX Codex GP ChatGPT 24установок cloud-solution-architect microsoft Превращает ИИ-агента в архитектора облачных решений по стандартам Azure Architecture Center. Помогает выбирать архитектурные стили и проверять дизайн систем по правилам WAF. Claude Code GitHub Copilot 117установок ai-sdk официальный Vercel Labs Скилл настраивает работу агента с Vercel AI SDK. Он помогает писать код для чатов, генерации текста, вызова инструментов и сборки агентов без устаревших методов. CX Codex GP ChatGPT 22установок mcp-builder официальный anthropics Скилл проводит через создание MCP-сервера на TypeScript или Python: от изучения протокола до тестов и оценки качества. Claude Code Claude.ai 130 949установок google-agents-cli-adk-code официальный Google Скилл даёт примеры и справку по Agent Development Kit: агентам, инструментам, колбэкам, состоянию и графовым workflow. Нужен при написании кода. Claude Code CX Codex Cursor +1 511 400установок

Вопросы о protobuf-grpc-api-review

Как установить protobuf-grpc-api-review в GitHub Copilot?

Выполните npx skills add github/awesome-copilot --skill protobuf-grpc-api-review. Также доступна команда gh skill install github/awesome-copilot protobuf-grpc-api-review.

Что делает protobuf-grpc-api-review?

Он проверяет изменения Protobuf и gRPC по совместимости бинарных данных, ProtoJSON и сгенерированных API. Также помогает оценить риски развёртывания и план миграции.

Какие сценарии версий проверяет скилл?

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

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

SKILL.md · MIT
---
name: protobuf-grpc-api-review
description: 'Review Protocol Buffer (.proto) and gRPC API changes for wire and JSON compatibility, safe schema evolution, rollout hazards, and RPC contract quality. Use when reviewing proto diffs, adding or changing messages and services, planning migrations, or diagnosing cross-version failures.'
---

# Protobuf and gRPC API Review

Review `.proto` and related gRPC changes as long-lived contracts. Distinguish what the wire format permits from what generated clients, JSON users, stored data, and mixed-version deployments can safely tolerate.

## Start With the Compatibility Envelope

Before deciding whether a change is safe, determine:

- the old and new schema, not only the final file
- whether payloads use binary protobuf, ProtoJSON, text format, or more than one encoding
- whether messages persist in databases, queues, logs, caches, or events
- whether clients exist outside the repository or release independently
- the protobuf syntax or edition and the generated languages/runtime versions
- whether HTTP/JSON transcoding, reflection, service config, or schema registries expose the contract
- the deployment order, rollback window, and duration of mixed-version operation

If context is missing, state the assumption and lower confidence. Do not call a change backward-compatible from the new schema alone.

## Review Workflow

### 1. Inventory Contract Changes

Compare the old and new definitions by fully qualified symbol. Record:

- message fields: number, name, type, cardinality, presence, `oneof`, defaults, and relevant options
- enums: value name, number, aliases, reservations, and zero value
- services: package, service, method, request and response types, and streaming mode
- generated API inputs: package options, outer class names, namespaces, and custom options

Ignore formatting-only changes after confirming they do not alter descriptors or generated APIs.

### 2. Evaluate Four Compatibility Dimensions

Assess each affected symbol independently:

1. **Binary wire** — can old and new readers parse both old and new bytes without corruption or loss?
2. **Named formats** — do ProtoJSON, text-format, REST-transcoded, or name-based consumers still work?
3. **Source and generated API** — will regenerated clients compile and preserve presence, enum, and accessor behavior?
4. **Behavior and operations** — do status codes, retry safety, deadlines, authorization, streaming, and resource bounds preserve the RPC contract?

Read [protobuf compatibility rules](references/protobuf-compatibility.md) for field, enum, presence, `oneof`, and serialization changes. Read [gRPC contract review](references/grpc-contract-review.md) when services, methods, or runtime behavior change.

### 3. Trace Mixed-Version Scenarios

For every non-trivial change, reason through these paths:

- old writer -> new reader
- new writer -> old reader
- old reader modifies and reserializes a new message
- rollback after new writers have emitted new values
- persisted old data read after the migration

For conditionally compatible changes, identify the exact writer constraint and the point at which it may be relaxed. A safe rollout commonly requires deploying readers before writers and retaining the old field or method until rollback is no longer needed.

### 4. Review Repository Evidence

Use the repository's own tooling when available:

- compile descriptors with the project's `protoc`, Buf, Gradle, Maven, Bazel, or language-specific task
- run configured breaking-change or lint checks
- inspect generated-code diffs only when they are committed by repository convention
- search call sites for exhaustive enum switches, presence assumptions, JSON field names, method paths, status handling, and retry configuration
- look for compatibility fixtures or descriptor baselines before proposing a new mechanism

Do not claim a check passed unless you ran it. If a required tool or baseline is unavailable, name the unverified risk.

### 5. Produce an Actionable Review

Lead with one verdict:

- **Compatible** — safe within the stated compatibility envelope
- **Rollout-dependent** — parseable, but safe only with explicit sequencing or value constraints
- **Breaking** — causes wire, named-format, source, or behavioral incompatibility
- **Insufficient context** — the old schema, encoding, consumers, or deployment model is unknown

Then provide only evidence-backed findings. For each finding include:

```text
[severity] Short title
Location: file and symbol or changed lines
Dimension: binary | JSON/text | source | behavior/operations
Change: old contract -> new contract
Impact: concrete failing mixed-version scenario
Remediation: smallest safe schema change or staged migration
```

Use **blocker** for corruption, unparsable data, tag reuse, or an unavoidable production break; **high** for likely cross-version data loss or unsafe RPC behavior; **medium** for bounded compatibility or operability risks; and **low** for maintainability issues that do not break the contract. Do not inflate style preferences into compatibility findings.

Conclude with:

- a compact compatibility matrix for changed symbols
- the rollout/rollback sequence if migration is required
- targeted tests that would prove the remaining assumptions

## Default Safety Principles

- Never reuse a field or enum number, even after deletion; reserve deleted numbers and usually names.
- Treat field-number changes and moving fields into an existing `oneof` as breaking.
- Treat type and cardinality changes as migrations, even when their binary wire types are compatible.
- Remember that adding a field or enum value can still break generated code or exhaustive consumers.
- Review ProtoJSON separately: names and unknown-field behavior make its compatibility envelope narrower than binary protobuf.
- Preserve unknown fields through read-modify-write paths when forward compatibility depends on them.
- Prefer additive evolution: add a new field or RPC, migrate readers and writers, deprecate the old contract, then remove it only after the compatibility window closes.
- Never recommend retries for a state-changing RPC without establishing idempotency or a deduplication mechanism.
- Require realistic client deadlines and cancellation-aware server work for production RPCs.

## Avoid False Positives

- Do not require every service to use streaming, retries, health checks, or HTTP transcoding.
- Do not flag a new optional field as breaking solely because old clients ignore it.
- Do not call a wire-compatible type change safe without checking value ranges and rollout order.
- Do not assume a renamed field is harmless when JSON, text format, reflection, or generated source APIs are consumers.
- Do not demand reservations for fields that never shipped; ask for release history when that distinction matters.

© github · MIT · github/awesome-copilot

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

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

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