.claude/skills/review-proto/SKILL.md
Review a proto PR
npx skillsauth add viqueen/claude-go-playground .claude/skills/review-protoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audit a proto PR. Answer the question: "Is the API contract right?"
The PR targets one project: connect-rpc-backend/ or grpc-backend/.
Identify which project from the PR file paths.
Fetch the PR diff:
gh pr diff <number>
Identify the domain being added and read the full files (not just the diff).
Check every item below. For each, report PASS or FAIL with a brief explanation.
protos/<domain>/v1/Three files per domain:
<domain>_model.proto — Resource + Enumssyntax = "proto3"; declaredpackage matches directory structure (<domain>.v1)go_package uses alias format: <domain>/v1;<domain>v1google/protobuf/timestamp.proto for time fieldsid (string), created_at, updated_at fieldsgoogle.protobuf.Timestamp (not strings)_UNSPECIFIED = 0 as zero valuebuf/validate/validate.proto — model fields MUST have validation annotations (enforced via FieldMask updates)space.v1.SpaceRef), not plain string IDs<domain>_refs.proto — Typed ID References (cross-package use)Ref message exists with id field[(buf.validate.field).string.uuid = true]string id<domain>_service.proto — Service + Request/Responsegoogle/protobuf/field_mask.protoCreate<Resource>, Get<Resource>, List<Resource>, Update<Resource>, Delete<Resource>min_len, max_len){defined_only: true, not_in: [0]})page_size with range validation ({gte: 0, lte: 100}) + page_token — 0 means server default (AIP-158)items (repeated, always named items) + next_page_tokenContent content = 1)string id (not Ref types)google.protobuf.FieldMask with [(buf.validate.field).required = true]google.protobuf.Empty (not a response with bool success)protos/buf.yamlversion: v2deps includes buf.build/bufbuild/protovalidate## Proto PR Audit — <domain>
### Summary
<one sentence: pass or issues found>
### Results
| Check | Status | Notes |
|-------|--------|-------|
| proto path | PASS | |
| ... | FAIL | <explanation> |
### Issues
<numbered list of FAIL items with details and suggested fixes>
gh pr diff $ARGUMENTSgh pr view $ARGUMENTS --json number,title,body,state,baseRefName,headRefName,urltesting
Review a test PR
tools
Review a search indexing PR
tools
Review a scaffold PR
tools
Review an integration PR