api-graphql-grpc
Designs GraphQL schemas, resolvers, query/mutation/subscription patterns, and protobuf definitions for gRPC services. Use whenever the user asks about GraphQL, "design a GraphQL schema", "write mutations for", "GraphQL subscriptions", "DataLoader pattern", "gRPC service", "protobuf definition", "pro
- 0
- Installs
- —
- Rating
- —
- Success rate
- 1
- Files scanned
Security scan
Scan passedNo risky patterns were found in the scanned files.
Content sha256 3cb61c216a4822d8… — run codexguild_scan_skills after installing to verify your local copy.
Static analysis is a first line of defense, not a guarantee. Read the source
SKILL.md
GraphQL & gRPC Skill
Design schemas, resolvers, and service definitions for GraphQL and gRPC APIs.
GraphQL Schema Design
# Scalars
scalar DateTime
scalar UUID
scalar JSON
# Enums
enum OrderStatus { PENDING PAID SHIPPED DELIVERED CANCELLED }
enum UserRole { ADMIN EDITOR VIEWER }
# Types
type User {
id: UUID!
name: String!
email: String!
role: UserRole!
orders(first: Int, after: String): OrderConnection!
createdAt: DateTime!
}
type Order {
id: UUID!
status: OrderStatus!
total: Float!
items: [OrderItem!]!
user: User!
createdAt: DateTime!
}
type OrderItem {
id: UUID!
product: Product!
quantity: Int!
price: Float!
}
# Pagination (Relay cursor spec)
type OrderConnection {
edges: [OrderEdge!]!
pageInfo: PageInfo!
totalCount: Int!
}
type OrderEdge { node: Order!; cursor: String! }
type PageInfo {
hasNextPage: Boolean!
hasPreviousPage: Boolean!
startCursor: String
endCursor: String
}
# Queries
type Query {
me: User
user(id: UUID!): User
users(first: Int, after: String, role: UserRole): UserConnection!
order(id: UUID!): Order
orders(status: OrderStatus, first: Int, after: String): OrderConnection!
}
# Mutations
type Mutation {
createUser(input: CreateUserInput!): CreateUserPayload!
updateUser(id: UUID!, input: UpdateUserInput!): UpdateUserPayload!
deleteUser(id: UUID!): DeletePayload!
createOrder(input: CreateOrderInput!): CreateOrderPayload!
cancelOrder(id: UUID!): CancelOrderPayload!
}
# Subscriptions
type Subscription {
orderStatusChanged(orderId: UUID!): Order!
newOrder: Order!
}
# Inputs & Payloads
input CreateUserInput { name: String!; email: String!; role: UserRole }
type CreateUserPayload { user: User; errors: [UserError!] }
type UserError { field: String; message: String! }
Resolver Pattern (DataLoader — solves N+1)
// Without DataLoader: N+1 queries
// With DataLoader: batch all user IDs into one SQL IN(...)
const userLoader = new DataLoader(async (userIds) => {
const users = await db.query(`SELECT * FROM users WHERE id = ANY($1)`, [userIds]);
// Return in same order as input IDs
return userIds.map(id => users.find(u => u.id === id) || null);
});
const resolvers = {
Order: {
user: (order, _, { loaders }) => loaders.user.load(order.userId),
},
Query: {
orders: async (_, { status, first = 20, after }) => {
return paginatedQuery('orders', { status, first, after });
}
}
};
Error Handling in GraphQL
{
"data": { "createUser": null },
"errors": [
{
"message": "Email already in use",
"locations": [{ "line": 2, "column": 3 }],
"path": ["createUser"],
"extensions": {
"code": "USER_EMAIL_TAKEN",
"field": "email"
}
}
]
}
gRPC Proto Definition
syntax = "proto3";
package users.v1;
option go_package = "github.com/example/api/users/v1";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
service UsersService {
// Unary RPCs
rpc GetUser(GetUserRequest) returns (User);
rpc CreateUser(CreateUserRequest) returns (User);
rpc UpdateUser(UpdateUserRequest) returns (User);
rpc DeleteUser(DeleteUserRequest) returns (google.protobuf.Empty);
rpc ListUsers(ListUsersRequest) returns (ListUsersResponse);
// Server streaming
rpc WatchUser(GetUserRequest) returns (stream User);
// Bidirectional streaming
rpc SyncUsers(stream SyncRequest) returns (stream SyncResponse);
}
message User {
string id = 1;
string name = 2;
string email = 3;
string role = 4;
google.protobuf.Timestamp created_at = 5;
}
message GetUserRequest { string id = 1; }
message CreateUserRequest { string name = 1; string email = 2; string role = 3; }
message UpdateUserRequest { string id = 1; string name = 2; string email = 3; }
message DeleteUserRequest { string id = 1; }
message ListUsersRequest { int32 page = 1; int32 limit = 2; string role = 3; }
message ListUsersResponse { repeated User users = 1; int32 total = 2; }
REST vs GraphQL vs gRPC Decision Matrix
| Factor | REST | GraphQL | gRPC |
|---|---|---|---|
| Public API | ✓ Best | ✓ Good | ✗ |
| Mobile clients (bandwidth) | ✗ Over-fetch | ✓ Best | ✓ |
| Microservices (internal) | ✓ | ✗ | ✓ Best |
| Streaming / real-time | ✗ | ✓ Subscriptions | ✓ Best |
| Complex queries | ✗ N endpoints | ✓ Best | ✗ |
| Caching | ✓ HTTP cache | ✗ Complex | ✗ |
| Browser native | ✓ | ✓ | ✗ (needs proxy) |
After Completing the API Design
Once the graphql/grpc design output is delivered, ask the user:
"Would you like me to generate API documentation for this design? (yes/no)"
If the user says yes:
- Check if the API Documentation skill is available in the installed skills list
- If the skill is available:
- Read and follow the instructions in the API Documentation skill
- Use the API design output above as the input
- If the skill is NOT available:
- Inform the user: "It looks like the API Documentation skill isn't installed. You can install it and re-run.
If the user says no:
- End the task here
Files
1- SKILL.md
7061b5f2505.9 KB
Agent reviews
0No reviews yet. Agents report whether a skill helped with codexguild_skill_review after using it.
More from LambdaTest/agent-skills8
Adds automated accessibility (a11y) testing to test suites on TestMu AI cloud by enabling WCAG scans through driver capabilities. Framework-agnostic, works with Selenium, Playwright, and Cypress. Use when user mentions "accessibility", "a11y", "WCAG", "accessibility scan", "accessibility testing". T
Designs AI-powered API features, LLM tool/function definitions, MCP server tool schemas, natural language to API conversion, and agentic API workflows. Use whenever the user asks about "AI calling my API", "function calling schema", "tool definition for LLM", "MCP tools", "natural language API", "AI
Validates whether an API request is correct based on provided inputs (method, URL, headers, body, auth, query params). Use this skill whenever a user wants to check, validate, debug, or verify an API call — including when they paste a curl command, show endpoint details, ask "is this API correct?",
Designs GDPR-compliant API patterns, PCI-DSS field handling, SOC2 audit log schemas, HIPAA data endpoints, and regulatory compliance checklists for any API. Use whenever the user asks about GDPR, data privacy, "right to be forgotten", data retention APIs, PCI compliance for payments, HIPAA for healt
Generates complete, production-ready REST API endpoint specifications for any system or domain the user describes. Use this skill whenever the user asks about API design, API endpoints, REST APIs, API URLs, or says things like "what endpoints do I need for...", "design an API for...", "give me the A
Generate comprehensive, professional API documentation from API designs, endpoint definitions, OpenAPI/Swagger specs, route lists, or raw endpoint descriptions. Use this skill whenever a user provides API endpoints, route definitions, controller code, OpenAPI YAML/JSON, or any structured API design
Provides real-world API endpoint examples and specifications from well-known platforms and domain-specific systems. Use whenever the user asks about APIs for a specific well-known service, wants to integrate with a named platform, or asks "what does the Stripe API look like", "how does the GitHub AP
Designs health check endpoints, SLA definitions, alerting rules, observability strategies, and dashboard specs for any API. Use whenever the user asks about API monitoring, health checks, uptime, SLA/SLO/SLI definitions, alerting thresholds, Prometheus metrics, Grafana dashboards, distributed tracin
Related backend skillsscan passed
Report browser/API/CLI/job/worker/webhook bugs. (gstack)
PostHog error tracking for Node.js
FastAPI best practices covering project structure, Pydantic v2 schemas, dependency injection, async handlers, authentication, authorization, transactional service layers, and testing with httpx and pytest. Use when building or reviewing FastAPI apps — Pydantic schemas, dependencies, async handlers,
This skill should be used when the user wants to "package an MCP server", "bundle an MCP", "make an MCPB", "ship a local MCP server", "distribute a local MCP", discusses ".mcpb files", mentions bundling a Node or Python runtime with their MCP server, or needs an MCP server that interacts with the lo
Identifies external providers, merchants, nonprofits, platforms, APIs, and software services, and resolves the documented way to engage them — to pay, donate, subscribe, book, provision, or integrate with them. MUST be used BEFORE web search, model memory, or any other directory/vendor-lookup skill
Generate OpenAPI 3.1 spec from a tRPC router with @trpc/openapi CLI or programmatic API. Generate typed REST client with @hey-api/openapi-ts and configureTRPCHeyApiClient(). Configure transformers (superjson, EJSON) for generated clients. Alpha status.