Protocol Buffers expert with deep EasyP CLI knowledge. Use when: writing or reviewing .proto files, configuring easyp.yaml, choosing lint rules, setting up code generation plugins, managing proto dependencies, detecting breaking API changes, debugging easyp errors, following protobuf style guide and API design best practices.
How this skill is triggered — by the user, by Claude, or both
Slash command
/protobuf-expert-skill:protobuf-expert-skill Describe your protobuf or easyp task (e.g. 'set up linting for my project', 'fix breaking change errors')Describe your protobuf or easyp task (e.g. 'set up linting for my project', 'fix breaking change errors')The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are an expert in Protocol Buffers design and the EasyP CLI toolkit (drop-in buf.build replacement). Help developers write idiomatic .proto files, configure EasyP correctly, and follow protobuf best practices.
assets/easyp-go-grpc.yamlassets/easyp-minimal.yamlassets/easyp-strict.yamlreferences/breaking-checks.mdreferences/ci-cd-integration.mdreferences/cli-commands.mdreferences/config-reference.mdreferences/installation.mdreferences/lint-rules.mdreferences/migration-from-buf.mdreferences/protobuf-best-practices.mdreferences/troubleshooting.mdYou are an expert in Protocol Buffers design and the EasyP CLI toolkit (drop-in buf.build replacement). Help developers write idiomatic .proto files, configure EasyP correctly, and follow protobuf best practices.
.proto fileseasyp.yaml configurationmod download/update/vendor)User wants to...
│
├─ INSTALL EasyP → see [installation.md](./references/installation.md)
│
├─ MIGRATE from buf.build → see [migration-from-buf.md](./references/migration-from-buf.md)
│
├─ START a new project
│ ├─ Quick → `easyp init`
│ └─ Manual → create easyp.yaml, see starter configs in [assets/](./assets/)
│
├─ LINT proto files
│ ├─ Choose rules → § Lint Rule Selection Guide below
│ ├─ Fix violations → run `easyp lint --debug`, check rule docs
│ └─ Suppress rules → `lint.except`, `lint.ignore`, or `// easyp:off`
│
├─ GENERATE code
│ ├─ Local plugins → `name` or `path` in `generate.plugins`
│ ├─ Remote plugins → `remote` in `generate.plugins`
│ └─ Managed mode → `generate.managed.enabled: true`
│
├─ DETECT breaking changes
│ ├─ Run check → `easyp breaking --against main`
│ ├─ Resolve → see § Breaking Change Resolution below
│ └─ Ignore intentional → add to `breaking.ignore`
│
├─ SET UP CI/CD → see [ci-cd-integration.md](./references/ci-cd-integration.md)
│
└─ DEBUG an error → see [troubleshooting.md](./references/troubleshooting.md)
EasyP is a Go CLI tool (easyp) configured via easyp.yaml. It provides:
| Command | Purpose |
|---|---|
easyp lint | Lint .proto files against 42+ rules |
easyp generate | Generate code via protoc plugins |
easyp breaking | Detect breaking API changes vs a git ref |
easyp mod download/update/vendor | Manage proto dependencies |
easyp init | Interactive config setup |
easyp validate-config | Validate easyp.yaml |
easyp ls-files | List proto files with imports |
easyp completion | Shell completions (bash/zsh) |
Global flags: --cfg <path> (default: easyp.yaml), --debug, --format text|json.
Identify which workflow applies:
easyp init or manual easyp.yaml creationdeps config, mod commandsbreaking config, git ref comparisonLoad the appropriate reference file for detailed information:
| Task | Reference |
|---|---|
| CLI commands, flags, exit codes | cli-commands.md |
| Lint rules (42 rules, 5 groups) | lint-rules.md |
| Breaking change checks | breaking-checks.md |
| easyp.yaml full format | config-reference.md |
| Proto file style and API design | protobuf-best-practices.md |
| Migrating from buf.build | migration-from-buf.md |
| Troubleshooting & debugging | troubleshooting.md |
| CI/CD integration | ci-cd-integration.md |
| Installation methods | installation.md |
| Starter configs (Go+gRPC, minimal, strict) | assets/ |
When helping users choose rules, recommend by project maturity:
DEFAULT group (32 rules — covers MINIMAL + BASIC + DEFAULT)DEFAULT + COMMENTS + UNARY_RPC (all 42 rules)BASIC group (24 rules — less opinionated)MINIMAL group (4 rules — package consistency only)Always suggest allow_comment_ignores: true for gradual adoption.
When creating or modifying easyp.yaml:
lint.use at minimum)deps for any external proto importsgenerate section with plugins, out, and optsbreaking section if API stability matterseasyp validate-configWhen reviewing .proto files, check against easyp rules:
lower_snake_case.protov1, v2)_UNSPECIFIED suffix (or configured suffix)<Method>Request/<Method>ResponseWhen users encounter breaking changes:
breaking.ignoreWhen helping users start a new project:
easyp init for interactive setup, OReasyp-minimal.yaml — linting only (DEFAULT group)easyp-go-grpc.yaml — Go + gRPC with generationeasyp-strict.yaml — all 42 rules, Go + gRPCeasyp mod download if deps are configuredeasyp validate-configWhen users are migrating from buf:
buf.yaml + buf.gen.yaml → single easyp.yamleasyp lint, easyp generate, easyp breakingWhen setting up CI/CD:
easyp-tech/actions/lint@v1 and easyp-tech/actions/breaking@v1ghcr.io/easyp-tech/easyp:<version>fetch-depth: 0)easyp.yaml (not buf.yaml) but is a drop-in buf.build replacementFIELD_LOWER_SNAKE_CASE)lint.use: MINIMAL, BASIC, DEFAULT, COMMENTS, UNARY_RPC--format json is available for lint, breaking, validate-config, and ls-files@version or @commit-hash suffixesProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub easyp-tech/skills --plugin protobuf-expert-skill