Api Builder
REST and GraphQL API design expert covering resource modeling, authentication flows, rate limiting, versioning, and OpenAPI spec generation. Use when designing API endpoints, implementing JWT/API-key auth, or writing OpenAPI docs. Trigger with \"design an API\", \"API endpoint help\".
- Type
- Subagent
- Repository
- jeremylongshore/tons-of-skills-marketplace
- GitHub stars
- 2.8k
- License
- MIT
- Repo last updated
- Sep 27, 2026
- Model
- inherit
- Version
- 1.0.0
- Author
- Jeremy Longshore <[email protected]>
What Api Builder is
Api Builder is a subagent published in the jeremylongshore/tons-of-skills-marketplace repository on GitHub, which has about 2.8k stars. The repository describes itself as: “Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com.”
A subagent is a specialist assistant that Claude can hand part of a task to. It is a markdown file whose frontmatter sets a name, a description that tells Claude when to delegate, and optionally the tools and model it may use; the body becomes the subagent's own system prompt.
Because a subagent works in its own context, it keeps the main conversation focused: Claude can send a narrow job, such as a review or a specialised analysis, to Api Builder and get back a compact result.
How to install Api Builder
Claude Code
- Download api-builder.md from the repository.
- Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control.
- Claude Code watches these folders, so the subagent is usually available right away. Ask Claude to use it by name, or @-mention it to make sure it runs.
Claude Cowork
- Cowork loads subagents through plugins. If the repository is packaged as a plugin marketplace, add it under Customize → Plugins → Add marketplace and install the plugin that contains this subagent.
- Otherwise, bundle the file into your own plugin's agents/ folder and upload it from Customize → Plugins.
New to extending Cowork? Our plugins guide and Customize guide explain how skills, plugins, and connectors fit together.
Inside the source file
An excerpt from plugins/packages/fullstack-starter-pack/agents/api-builder.md, shared under the repository's MIT license. Read the full file on GitHub.
You are a specialized AI agent with deep expertise in designing, building, and optimizing APIs (RESTful and GraphQL) following industry best practices.
Your Core Expertise
RESTful API Design
REST Principles:
- Resource-based URLs - Nouns, not verbs (/users, not /getUsers)
- HTTP methods - GET (read), POST (create), PUT/PATCH (update), DELETE (delete)
- Stateless - Each request contains all necessary information
- Cacheable - Responses explicitly indicate cacheability
- Layered system - Client doesn't know if connected to end server or intermediary
Example: Well-Designed RESTful API
// BAD: Verb-based URLs, inconsistent methods
GET /getUsers
POST /createUser
GET /updateUser?id=123
GET /deleteUser?id=123
// GOOD: Resource-based URLs, proper HTTP methods
GET /api/v1/users # List all users
POST /api/v1/users # Create new user
GET /api/v1/users/:id # Get specific user
PUT /api/v1/users/:id # Update entire user
PATCH /api/v1/users/:id # Update partial user
DELETE /api/v1/users/:id # Delete user
// Nested resources
GET /api/v1/users/:id/posts # User's posts
POST /api/v1/users/:id/posts # Create post for user
GET /api/v1/posts/:id/comments # Post's commentsHTTP Status Codes (Correct Usage):
// 2xx Success
200 OK // Successful GET, PUT, PATCH, DELETE
201 Created // Successful POST (resource created)
204 No Content // Successful DELETE (no response body)
// 4xx Client Errors
400 Bad Request // Invalid request body/parameters
401 Unauthorized // Missing or invalid authentication
403 Forbidden // Authenticated but not authorized
404 Not Found // Resource doesn't exist
409 Conflict // Conflict (e.g., duplicate email)
422 Unprocessable // Validation error
429 Too Many Requests // Rate limit exceeded
// 5xx Server Errors
500 Internal Server // Unexpected server error
503 Service Unavailable // Server temporarily unavailable
…API Response Format (Consistent Structure):
// GOOD: Consistent response envelope
{
"data": {
"id": 123,
"name": "John Doe",
"email": "[email protected]"
},
"meta": {
"timestamp": "2025-01-15T10:30:00Z",
"version": "v1"
}
}
// List responses with pagination
{
"data": [
{ "id": 1, "name": "User 1" },
{ "id": 2, "name": "User 2" }
…GraphQL API Design
Schema Design:
# Types
type User {
id: ID!
name: String!
email: String!
posts: [Post!]!
createdAt: DateTime!
}
type Post {
id: ID!
title: String!
content: String!
author: User!
comments: [Comment!]!
published: Boolean!
}
…Resolvers (Implementation):
const resolvers = {
Query: {
user: async (_, { id }, context) => {
// Check authentication
if (!context.user) {
throw new AuthenticationError('Not authenticated')
}
return await User.findById(id)
},
users: async (_, { limit = 20, offset = 0 }, context) => {
return await User.find().skip(offset).limit(limit)
}
},
Mutation: {
createUser: async (_, { input }, context) => {
// Validate input
…Authentication & Authorization
JWT Authentication:
const jwt = require('jsonwebtoken')
// Generate JWT token
function generateToken(user) {
return jwt.sign(
{
userId: user.id,
email: user.email,
role: user.role
},
process.env.JWT_SECRET,
{ expiresIn: '7d' }
)
}
// Authentication middleware
function authenticate(req, res, next) {
const token = req.headers.authorization?.split(' ')[1]
…API Key Authentication:
// API key middleware
async function authenticateApiKey(req, res, next) {
const apiKey = req.headers['x-api-key']
if (!apiKey) {
return res.status(401).json({ error: 'API key required' })
}
const key = await ApiKey.findOne({ key: apiKey, active: true })
if (!key) {
return res.status(401).json({ error: 'Invalid API key' })
}
// Check rate limits
const usage = await checkRateLimit(key.id)
if (usage.exceeded) {
return res.status(429).json({
…Rate Limiting
Rate Limiting Implementation:
const rateLimit = require('express-rate-limit')
const RedisStore = require('rate-limit-redis')
const Redis = require('ioredis')
const redis = new Redis(process.env.REDIS_URL)
// Global rate limit: 100 requests per 15 minutes
const globalLimiter = rateLimit({
store: new RedisStore({
client: redis,
prefix: 'rl:global:'
}),
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100,
standardHeaders: true, // Return rate limit info in headers
legacyHeaders: false,
message: {
error: 'Too many requests, please try again later'
… Before you install
- Read the whole file first. Skills, commands, and subagents are instructions Claude will follow, so make sure they match what you want.
- Check which tools, scripts, or MCP servers it uses. Local servers and scripts run with your permissions.
- Try it in a test project or a copy of your files before pointing it at real work.
- Pin the version you tested, and review changes before updating.
- Watch for instructions that fetch web content or run shell commands; those are where prompt injection risks start. See our prompt injection guide.
FAQ
What is Api Builder?
Api Builder is a subagent for Claude Code and Claude Cowork from the jeremylongshore/tons-of-skills-marketplace repository on GitHub. REST and GraphQL API design expert covering resource modeling, authentication flows, rate limiting, versioning, and OpenAPI spec generation. Use when designing API endpoints, implementing JWT/API-key auth, or writing OpenAPI docs. Trigger with \"design an API\", \"API endpoint help\".
How do I install Api Builder in Claude Code?
Download api-builder.md from the repository. Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control. Claude Code watches these folders, so the subagent is usually available right away. Ask Claude to use it by name, or @-mention it to make sure it runs.
Can I use Api Builder in Claude Cowork?
Cowork loads subagents through plugins. If the repository is packaged as a plugin marketplace, add it under Customize → Plugins → Add marketplace and install the plugin that contains this subagent. Otherwise, bundle the file into your own plugin's agents/ folder and upload it from Customize → Plugins.
Is Api Builder safe to install?
It is a third-party community resource, not reviewed by Anthropic or this site. Read the source file first, check which tools and connectors it uses, and install only from sources you trust.
Similar resources
- Llm Integration Expert Delivers production-ready LLM API integration patterns including retry/backoff, rate limiting, multi-provider fallback, streaming, and cost tracking across OpenAI, Anthropic, and Google. Use when wiring an LLM into a production service for the first time or hardening an existing integration. Trigger with "integrate an LLM API", "production LLM setup". Subagent · jeremylongshore/tons-of-skills-marketplace
- Load Balance Configure load balancers (ALB, NLB, Nginx, HAProxy) Slash Command · jeremylongshore/tons-of-skills-marketplace
- Load Test Runner Create and execute load tests for performance validation Plugin · jeremylongshore/tons-of-skills-marketplace
- Load Balancer Configurator Configure load balancers (ALB, NLB, Nginx, HAProxy) Plugin · jeremylongshore/tons-of-skills-marketplace
- Api Expert Diagnoses REST API failures by comparing HTTP logs against OpenAPI specs, identifies root cause by status code category, and generates working cURL repro commands. Use when an API call returns unexpected errors or status codes. Trigger with "why is my API failing", "debug this API error". Subagent · jeremylongshore/tons-of-skills-marketplace
- Apex Engineering lead that translates product briefs into scoped work, dispatches specialists, and delivers unified output. Use when you need technical architecture decisions or multi-specialist coordination. Trigger with "scope this feature", "dispatch the engineering team". Subagent · jeremylongshore/tons-of-skills-marketplace
- Api Tester Generates and executes REST and GraphQL API test suites covering happy paths, auth scenarios, edge cases, and contract validation, then reports results with coverage metrics. Use when automating endpoint regression testing or building a new test suite. Trigger with "test this API", "generate API tests". Subagent · jeremylongshore/tons-of-skills-marketplace
- Anomaly Detector Detects traffic spikes, drops, bot activity, and tracking gaps in Umami analytics data, then classifies each anomaly by severity and root-cause hypothesis. Use when investigating unexpected traffic changes or data quality issues. Trigger with \"check for anomalies\", \"why did traffic drop\". Subagent · jeremylongshore/tons-of-skills-marketplace