Ensures frontend and backend agree on API request/response shapes using Apidog MCP as the single source of truth. Replaces manual contracts.md files. Use when implementing or reviewing API endpoints and their consumers. Automatically loaded by team-lead, backend-dev, web-dev, mobile-dev, and reviewer.
From ennam-dev-agent-teamnpx claudepluginhub en-nam/ennam-claude-agent-team --plugin ennam-dev-agent-teamThis skill uses the workspace's default tool permissions.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Executes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
Apidog MCP is the single source of truth for all API contracts in this project. Every agent that implements or consumes an API endpoint MUST verify against Apidog.
Apidog Specification (source of truth)
│
├──→ team-lead: defines shared types/models matching spec
│
├──→ backend-dev: implements endpoints matching spec exactly
│
├──→ web-dev / mobile-dev: consumes endpoints using typed clients
│
├──→ test-worker: validates against spec in tests
│
└──→ reviewer: verifies all implementations match spec
Note: For mobile-only projects without a backend (e.g., apps consuming third-party APIs), API contracts are defined by the external API documentation. Use Apidog to document the external API surface your app consumes, or skip this protocol if no API layer exists.
Before spawning workers for any API-related feature:
Query Apidog MCP for the relevant endpoint specifications
Create or update shared types/models that match the spec:
Web/TypeScript Projects:
src/types/ for request bodies, response types, path/query paramsFlutter/Dart Projects:
lib/core/models/ for request DTOs, response models, enumsOther Projects:
Include the Apidog project reference in each worker's spawn prompt
If the endpoint doesn't exist in Apidog yet:
When implementing an API endpoint:
Query Apidog MCP for the endpoint specification before writing code
Match exactly: Your route handler must:
Validate input using schemas/validators that match the Apidog spec:
Web/TypeScript (Zod example):
// Schema must match Apidog spec for the endpoint
const CreateItemSchema = z.object({
name: z.string().min(1).max(200),
description: z.string().min(1).max(5000),
});
Flutter/Dart (freezed/json_serializable example):
// Model must match Apidog spec for the endpoint
@freezed
class CreateItemRequest with _$CreateItemRequest {
factory CreateItemRequest({
required String name,
required String description,
}) = _CreateItemRequest;
factory CreateItemRequest.fromJson(Map<String, dynamic> json) =>
_$CreateItemRequestFromJson(json);
}
Return consistent error shapes appropriate to your stack
If you must deviate from the spec, STOP and notify the team-lead
When consuming an API endpoint:
Query Apidog MCP for the endpoint specification before coding
Import shared types/models — never define API types locally
src/types/lib/core/models/Handle all documented status codes appropriately for your stack:
Web/TypeScript:
const response = await fetch(`/api/items/${id}`, {
method: 'POST',
body: JSON.stringify(data),
});
if (!response.ok) {
// Handle each error code documented in Apidog
const error = await response.json();
// 400: validation error
// 401: not authenticated
// 404: not found
}
Flutter/Dart:
final response = await dio.post('/api/items/$id', data: data.toJson());
// Handle error status codes documented in Apidog
// Use either try/catch with DioException or response status checks
If the API is not ready yet (backend-dev hasn't finished):
When reviewing API-related changes:
contracts.md files manually — use Apidog MCP insteadany for API response types — defeats the purpose of contract sync