Skip to content
Back to skills

Api Route Scaffold Applelamps Grokify

ASecurity

Create new Next.js API routes following project patterns. Use when user mentions "new endpoint", "add API", "create route", or "POST/GET handler".

  • 666 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added February 8, 2026
businesstypescriptnextjsrailsdebuggingapidatabase

Works with

  • cli
  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill api-route-scaffold-applelamps-grokify --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Api Route Scaffold Applelamps Grokify?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Api Route Scaffold Applelamps Grokify
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-api-route-scaffold-applelamps-grokify/badge)](https://www.skillsdirectory.com/skills/majiayu000-api-route-scaffold-applelamps-grokify)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: api-route-scaffold
description: Create new Next.js API routes following project patterns. Use when user mentions "new endpoint", "add API", "create route", or "POST/GET handler".
---

# Creating API Routes

This project uses Next.js 16 App Router with a consistent API pattern across all routes.

## Instructions

1. **Create route file**: `app/api/<endpoint-name>/route.ts`

2. **Use this template**:
```typescript
import { NextRequest, NextResponse } from 'next/server';

// CORS headers for cross-origin requests
const corsHeaders = {
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type',
};

export async function OPTIONS() {
  return NextResponse.json(null, { headers: corsHeaders });
}

export async function POST(req: NextRequest) {
  try {
    const { /* destructure fields */ } = await req.json();

    // Input validation
    if (!requiredField) {
      return NextResponse.json(
        { error: 'Field is required' },
        { status: 400, headers: corsHeaders }
      );
    }

    // Check required environment variables
    const apiKey = process.env.YOUR_API_KEY;
    if (!apiKey) {
      console.error('YOUR_API_KEY is not configured');
      return NextResponse.json(
        { error: 'YOUR_API_KEY is not configured' },
        { status: 500, headers: corsHeaders }
      );
    }

    // Business logic here
    const result = await doSomething();

    return NextResponse.json({ result }, { headers: corsHeaders });
  } catch (error) {
    console.error('Error in endpoint:', error);
    return NextResponse.json(
      { error: error instanceof Error ? error.message : 'Unknown error' },
      { status: 500, headers: corsHeaders }
    );
  }
}
```

3. **For X handle validation** (if applicable):
```typescript
const HANDLE_REGEX = /^[a-zA-Z0-9_]{1,15}$/;
if (!handle || !HANDLE_REGEX.test(handle)) {
  return NextResponse.json(
    { error: 'Invalid X handle format.' },
    { status: 400, headers: corsHeaders }
  );
}
```

4. **For database operations**, import from `@/db`:
```typescript
import { db, tableName } from '@/db';
import { eq, gt, and } from 'drizzle-orm';
```

## Existing Endpoints Reference

| Endpoint | Method | Purpose |
|----------|--------|---------|
| `/api/analyze-account` | POST | Analyze X account with Grok |
| `/api/generate-image` | POST | Generate images (rate-limited) |
| `/api/roast-account` | POST | Generate roast letter |
| `/api/fbi-profile` | POST | Generate FBI profile |

## Examples

- "Create an endpoint to fetch user stats" → Create `app/api/user-stats/route.ts`
- "Add a health check endpoint" → Create `app/api/health/route.ts` with GET handler

## Guardrails

- Always include CORS headers on all responses
- Always include OPTIONS handler for preflight requests
- Check environment variables exist before using
- Use try/catch with proper error responses
- Log errors with console.error for debugging
- Never expose API keys in responses

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.