Skip to main content
skill GitHub Copilot official · GitHub

protobuf-grpc-api-review — GitHub Copilot skill: review and install

Reviews .proto and gRPC changes for format compatibility, migration risks, and RPC contract quality. Use it when changing schemas or investigating failures across client versions.

Install into GitHub Copilot · Skills CLI (Vercel) All methods and platforms ↓
npx skills add github/awesome-copilot --skill protobuf-grpc-api-review
Open on GitHub

What protobuf-grpc-api-review does

The skill compares old and new schemas, then checks changes against binary protobuf, ProtoJSON, and generated APIs. It also factors in stored messages, external clients, and deployment order. For each affected symbol, it traces scenarios involving old and new readers and writers.

Its review can include schema evolution and rollback guidance, plus suggested checks and tests. It recommends using project tools such as protoc or Buf when available, and says not to report checks as passed unless they were run. Service and RPC behavior changes get a separate contract review.

Install it when your team changes Protobuf schemas or gRPC APIs and needs to account for clients on different versions. Without the old schema, data formats, and deployment model, compatibility conclusions have limited confidence.

What it helps with

  • check a Protobuf field number or type change
  • assess ProtoJSON compatibility after a field rename
  • spot risks in a staged schema migration
  • review an RPC contract after changing a method or streaming mode
  • draft a migration and rollback plan for clients on different versions

Example prompts for the agent

  • Review this `.proto` diff for binary and JSON compatibility.
  • Assess this migration plan: deploy new readers before new writers. What rollback risks remain?
  • Review the gRPC method changes and list tests for clients on different versions.

How to install protobuf-grpc-api-review

1Skills 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

3Manually: put the files in place

.github/skills/protobuf-grpc-api-review/SKILL.md

From the same set554

The whole set →
git-commit official github This skill reviews Git changes, stages related files, and creates Conventional Commits. Use it when you want an agent to make one commit or split work into separate commits. GitHub Copilot 47,165installs excalidraw-diagram-generator official github Turn a plain-language description into an Excalidraw diagram. Useful for mapping processes, system structure, and relationships between entities. GitHub Copilot 31,639installs multi-stage-dockerfile official github This skill guides GitHub Copilot in writing multi-stage Dockerfiles for different languages and frameworks. Use it when the final runtime image should contain fewer build dependencies. GitHub Copilot 29,688installs documentation-writer official github Skill that turns the agent into a technical writer following the Diátaxis framework: tutorials, how-to guides, reference, and explanation. Proposes structure before writing. GitHub Copilot 27,757installs prd official github Turns a feature idea into a structured PRD with user stories, technical requirements, and risks. Use it when planning a software feature or an AI-powered one. GitHub Copilot 24,035installs refactor official github This skill reshapes existing code without changing its external behavior. Use it for gradual cleanup of large functions, duplication, weak types, and code smells. GitHub Copilot 22,321installs java-springboot official github Gives GitHub Copilot Spring Boot development practices, from project layout to tests and security. Use it when writing or reviewing Java application code. GitHub Copilot 21,272installs create-readme official github This skill reviews a project and creates a structured README.md. Use it when the repository needs clear documentation based on its actual files and code. GitHub Copilot 19,081installs

Similar

stripe-best-practices official Stripe Integration guide for Stripe in Codex: covers Checkout Sessions, Connect Accounts v2, tax setup, and restricted API keys. CX Codex GP ChatGPT 36installs stripe-best-practices official OpenAI This skill guides Stripe API choices for payments, subscriptions, marketplaces, and financial accounts. Use it when building or reviewing a Stripe integration. CX Codex GP ChatGPT 36installs chatgpt-app-submission official OpenAI Inspects a ChatGPT Apps MCP server and prepares the submission JSON. Use it before review to collect app info, test cases, and findings. CX Codex GP ChatGPT 29installs uml-and-software-architecture-visualization official OpenAI This skill helps choose a notation and format for UML diagrams, architecture maps, workflows, and data models. Use it when you need to describe how a system is structured or behaves. CX Codex GP ChatGPT 24installs cloud-solution-architect microsoft Equips your AI agent with Azure Architecture Center guidance. It helps select architecture styles and validate system designs against Well-Architected Framework pillars. Claude Code GitHub Copilot 117installs ai-sdk official Vercel Labs Provides Vercel AI SDK guidance for your coding agent. Helps build chat interfaces, streaming routes, tool calls, and agents without obsolete syntax. CX Codex GP ChatGPT 22installs mcp-builder official anthropics This skill walks through building an MCP server in TypeScript or Python, from reading the protocol spec to writing tests and evaluation questions. Claude Code Claude.ai 130,949installs google-agents-cli-adk-code official Google A reference skill for building ADK agents with tools, callbacks, state, and workflows. Use it when an agent project needs concrete API patterns or code examples. Claude Code CX Codex Cursor +1 511,400installs

Questions about protobuf-grpc-api-review

How do I install protobuf-grpc-api-review in GitHub Copilot?

Run npx skills add github/awesome-copilot --skill protobuf-grpc-api-review. You can also use gh skill install github/awesome-copilot protobuf-grpc-api-review.

What does protobuf-grpc-api-review do?

It reviews Protobuf and gRPC changes for binary, ProtoJSON, and generated API compatibility. It also assesses rollout risks and migration plans.

Which mixed-version scenarios does the skill check?

It considers new data read by old clients and old data read by new ones, old readers reserializing updated messages, and rollbacks after new values have been written.

Source text

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

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor