Claude-skill-registry laravel-api

Build RESTful APIs with Laravel using API Resources, Sanctum authentication, rate limiting, and versioning. Use when creating API endpoints, transforming responses, or handling API authentication.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/laravel-api" ~/.claude/skills/majiayu000-claude-skill-registry-laravel-api-f38836 && rm -rf "$T"
manifest: skills/data/laravel-api/SKILL.md
source content

Laravel API Development

Agent Workflow (MANDATORY)

Before ANY implementation, launch in parallel:

  1. fuse-ai-pilot:explore-codebase - Analyze existing API patterns
  2. fuse-ai-pilot:research-expert - Verify Laravel API docs via Context7
  3. mcp__context7__query-docs - Check API Resources and Sanctum patterns

After implementation, run fuse-ai-pilot:sniper for validation.


Overview

Build RESTful APIs with Laravel using API Resources for response transformation and Sanctum for authentication.

ComponentPurpose
ControllersHandle requests, delegate to services
Form RequestsValidate input, authorize actions
API ResourcesTransform models to JSON
MiddlewareAuth, rate limiting, CORS
RoutesVersioned endpoints with groups
PaginationOffset/cursor pagination
HTTP ClientConsume external APIs

Critical Rules

  1. Always use API Resources - Never return Eloquent models directly
  2. Versioned routes - Prefix with
    /v1/
    ,
    /v2/
  3. Validate all input - Use Form Requests, not inline validation
  4. Rate limiting - Configure per-route limits
  5. Consistent responses - Same structure, proper status codes
  6. Use services - Keep controllers thin
  7. Eager load - Prevent N+1 with
    with()
    before pagination

Reference Guide

Core Concepts

TopicReferenceWhen to consult
Routingrouting.mdDefining versioned API routes
Controllerscontrollers.mdController patterns, resource methods
Middlewaremiddleware.mdRoute protection, request filtering
Validationvalidation.mdForm Requests, validation rules

Request/Response

TopicReferenceWhen to consult
Requestsrequests.mdAccessing input, files, headers
Responsesresponses.mdAPI Resources, status codes
Paginationpagination.mdOffset/cursor pagination

Advanced

TopicReferenceWhen to consult
Rate Limitingrate-limiting.mdThrottle configuration
HTTP Clienthttp-client.mdConsuming external APIs
URLsurls.mdURL generation, signed URLs
Stringsstrings.mdString helpers, UUIDs, slugs
Redirectsredirects.mdRedirect responses

Templates (Code Examples)

Controllers & Routes

TemplatePurpose
ApiController.php.mdComplete CRUD controller with service
api-routes.mdVersioned routes with middleware
routing-examples.mdDetailed routing patterns

Validation & Resources

TemplatePurpose
FormRequest.php.mdStore/Update Form Requests
validation-rules.mdAll validation rules reference
ApiResource.php.mdResource with relationships

External APIs

TemplatePurpose
HttpClientService.php.mdReusable HTTP client service

Quick Reference

Resource Response

return PostResource::collection($posts);
return PostResource::make($post);

Status Codes

return PostResource::make($post)->response()->setStatusCode(201);
return response()->json(null, 204);

Form Request

public function store(StorePostRequest $request): JsonResponse
{
    $post = $this->service->create($request->validated());
    return PostResource::make($post)->response()->setStatusCode(201);
}

Rate Limiting

Route::middleware('throttle:60,1')->group(fn () => ...);

Versioned Routes

Route::prefix('v1')->group(function () {
    Route::apiResource('posts', PostController::class);
});

Pagination

return PostResource::collection(Post::paginate(15));

Feature Matrix

FeatureStatusReference
RESTful Controllerscontrollers.md
API Resourcesresponses.md
Form Request Validationvalidation.md
Route Versioningrouting.md
Route Model Bindingrouting.md
Middlewaremiddleware.md
Rate Limitingrate-limiting.md
Paginationpagination.md
Cursor Paginationpagination.md
HTTP Clienthttp-client.md
Signed URLsurls.md
JSON Responsesresponses.md