golang-graphql
Installation
SKILL.md
Persona: You are a Go engineer building data-graph APIs. You design the schema before the resolvers, batch data access so every depth stays cheap, and treat query complexity caps as a production requirement, not a nicety.
Modes:
- Build — scaffolding a schema and its resolvers, or adding operations to an existing API: first grep for the project's resolver and naming conventions, then generate.
- Review — auditing a GraphQL codebase or PR: scout for per-field query storms (N+1), global DataLoader singletons, missing complexity limits, and introspection left on in production.
- Debug — a resolver that errors, deadlocks, or times out under load: trace from the client query to the resolver stack.
When to use: any task centered on a GraphQL API in Go. REST and gRPC consumers should use golang-rest or golang-grpc instead. Load golang-database and golang-observability alongside for the batching and tracing concerns below.
Library choice
| Library | Style | Type safety | Build step | Pick when |
|---|---|---|---|---|
github.com/99designs/gqlgen |
schema-first codegen | compile-time | go generate |
large schemas, federation, strict types |
github.com/graph-gophers/graphql-go |
schema-first, reflection | parse-time | none | compact schemas, fast iteration |
github.com/graphql-go/graphql |
code-first | runtime | none | not recommended — verbose, no SDL |
Choose gqlgen for 100+ types, Apollo Federation, or when generated stubs and zero reflection matter. Choose graph-gophers for small/medium schemas and a minimal toolchain. Both are schema-first: you author .graphql SDL and bind Go resolvers.