Claude-skill-registry api-mocking

🎭 API Mocking Skill

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/api-mocking" ~/.claude/skills/majiayu000-claude-skill-registry-api-mocking && rm -rf "$T"
manifest: skills/data/api-mocking/SKILL.md
safety · automated scan (medium risk)
This is a pattern-based risk scan, not a security review. Our crawler flagged:
  • global npm install
  • references .env files
Always read a skill's source content before installing. Patterns alone don't mean the skill is malicious — but they warrant attention.
source content

🎭 API Mocking Skill


name: api-mocking description: Create mock APIs for frontend development and testing without backend dependencies

🎯 Purpose

สร้าง mock APIs สำหรับ frontend development และ testing โดยไม่ต้องพึ่ง backend จริง

📋 When to Use

  • Frontend before backend ready
  • Integration testing
  • Offline development
  • Demo/presentations
  • Rate limiting avoidance

🔧 Mocking Methods

1. MSW (Mock Service Worker)

// mocks/handlers.ts
import { http, HttpResponse } from 'msw';

export const handlers = [
  http.get('/api/users', () => {
    return HttpResponse.json([
      { id: 1, name: 'John' },
      { id: 2, name: 'Jane' },
    ]);
  }),
  
  http.post('/api/users', async ({ request }) => {
    const data = await request.json();
    return HttpResponse.json({ id: 3, ...data }, { status: 201 });
  }),
];
// mocks/browser.ts
import { setupWorker } from 'msw/browser';
import { handlers } from './handlers';

export const worker = setupWorker(...handlers);

2. JSON Server

npm install -g json-server

# db.json
{
  "users": [
    { "id": 1, "name": "John" }
  ],
  "posts": [
    { "id": 1, "title": "Hello", "userId": 1 }
  ]
}

json-server --watch db.json --port 3001

3. Local Mock Functions

const mockApi = {
  users: {
    getAll: () => Promise.resolve([
      { id: 1, name: 'John' }
    ]),
    getById: (id: string) => Promise.resolve({ id, name: 'John' }),
    create: (data: any) => Promise.resolve({ id: Date.now(), ...data }),
  }
};

// Use in dev
const api = process.env.NODE_ENV === 'development' ? mockApi : realApi;

📊 Mock Data Generation

Faker.js

import { faker } from '@faker-js/faker';

function generateUsers(count: number) {
  return Array.from({ length: count }, () => ({
    id: faker.string.uuid(),
    name: faker.person.fullName(),
    email: faker.internet.email(),
    avatar: faker.image.avatar(),
  }));
}

Thai Mock Data

const thaiMockData = {
  names: ['สมชาย', 'สมหญิง', 'วิชัย', 'วันดี'],
  addresses: ['กรุงเทพฯ', 'เชียงใหม่', 'ขอนแก่น'],
  
  getRandomName: () => thaiMockData.names[Math.floor(Math.random() * thaiMockData.names.length)],
};

📝 Mock Response Templates

Success Response

{
  data: { /* actual data */ },
  success: true,
  message: 'Operation successful'
}

Error Response

{
  error: {
    code: 'VALIDATION_ERROR',
    message: 'Invalid input',
    details: { field: 'email', issue: 'Invalid format' }
  },
  success: false
}

Paginated Response

{
  data: [ /* items */ ],
  pagination: {
    page: 1,
    limit: 10,
    total: 100,
    totalPages: 10
  }
}

✅ Mocking Checklist

  • All endpoints covered
  • Realistic data
  • Error scenarios
  • Edge cases
  • Loading delays (for UX)
  • Thai content (if Thai app)

🔗 Related Skills

  • api-design
    - Design APIs
  • testing
    - Test with mocks
  • api-client-generator
    - API clients