Skill: api-mocking
API mock configuration for tests. Trigger when the user wants to mock APIs, use MSW, or test without a backend.
Configuration
| Property | Value |
|---|---|
| Context | fork |
| Allowed tools | Read, Write, Edit, Glob, Grep, Bash |
| Keywords | api, mocking |
Detailed description
API Mocking (pointer)
MSW handler API, browser/node setup, install commands and request-interception internals are canonical at vendor docs and drift on each release:
- MSW — mswjs.io (recommended default; browser worker + Node server, single handler set)
- nock — github.com/nock/nock (Node-only HTTP interception)
- json-server — github.com/typicode/json-server (full REST fake server from a JSON file)
- Mirage JS — miragejs.com (browser-only, models + factories)
Tool selection (version-agnostic)
Need to mock HTTP for tests/dev?
├── Browser AND Node from one handler set → MSW
├── Node-only unit tests, low ceremony → nock
├── Need a stateful REST fake server (CRUD) → json-server
└── Browser-only with relational fixtures (factories) → Mirage JS
Foundation discipline (keep across releases)
- Type-safe mocks: derive mock payloads from the same TypeScript types as the real API (e.g. shared
types/api.ts). A mock that compiles against stale types is the #1 source of mock-prod divergence. - Reset between tests: always
resetHandlers()(MSW) orcleanAll()(nock) inafterEach— leaked state across tests is a debugging tax. - Realistic failure modes: simulate 5xx/timeouts/auth errors, not just happy paths. The mock is only useful if it exercises the same edge cases as prod.
- Unhandled = error: in tests use
onUnhandledRequest: 'error'(MSW) so a typo'd URL fails loudly instead of silently passing.
See also
dev-tdd— mocks live in test setup; this skill activates from TDD workqa-e2e— Playwright/Cypress tests often layer MSW for deterministic stubsdev-testing-setup— wires the globalsetupServerinto vitest/jest config
Automatic triggering
This skill is automatically activated when:
- The matching keywords are detected in the conversation
- The task context matches the skill's domain
Triggering examples
- "I want to api..."
- "I want to mocking..."
Context fork
Fork means the skill runs in an isolated context:
- Does not pollute the main conversation
- Results are returned cleanly
- Ideal for autonomous tasks