Designs API-first with OpenAPI/GraphQL schemas, then generates server stubs and client SDKs. Enables parallel frontend/backend development for small teams.
From forged-claude-codenpx claudepluginhub dokkabei97/forged-claude-code --plugin forged-claude-codeThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
Design the API contract first, then build frontend and backend in parallel. Small teams move faster when everyone agrees on the interface upfront.
| Trigger | Behavior |
|---|---|
| Starting new API | Full API design workflow |
| "OpenAPI", "API design" | Schema generation |
| Frontend/backend need to work in parallel | Contract-first setup |
From domain description, identify:
openapi: 3.1.0
info:
title: My App API
version: 1.0.0
paths:
/api/v1/users:
get:
summary: List users
parameters:
- name: page
in: query
schema: { type: integer, default: 1 }
- name: limit
in: query
schema: { type: integer, default: 20, maximum: 100 }
responses:
'200':
description: User list
content:
application/json:
schema:
type: object
properties:
data:
type: array
items: { $ref: '#/components/schemas/User' }
pagination:
$ref: '#/components/schemas/Pagination'
post:
summary: Create user
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/CreateUser' }
responses:
'201':
description: Created
components:
schemas:
User:
type: object
properties:
id: { type: string, format: uuid }
email: { type: string, format: email }
name: { type: string }
createdAt: { type: string, format: date-time }
CreateUser:
type: object
required: [email, name]
properties:
email: { type: string, format: email }
name: { type: string, minLength: 1, maxLength: 100 }
/users not /user/api/v1/{ error: { code, message, details } }?status=active&sort=-createdAt| Factor | REST | GraphQL |
|---|---|---|
| Multiple clients with different needs | ❌ Over/under-fetching | ✅ Client-driven queries |
| Simple CRUD | ✅ Standard patterns | ❌ Overkill |
| Caching | ✅ HTTP caching built-in | ⚠️ Requires effort |
| Team size < 5 | ✅ Simpler to learn | ❌ Learning curve |
| Startup default | ✅ Start here | Consider at scale |
| Tool | Purpose |
|---|---|
| Write | Generate OpenAPI/GraphQL schemas |
| Read | Analyze existing API code |
| Bash | Generate stubs (npx openapi-generator-cli generate) |
Will:
Will Not: