About msw
An API mocking guide for AI agents and LLMs working with MSW v2. Its 48 impact-ranked rules cover setup, handlers, testing, responses, and GraphQL mocking.
Key features
- 0148 API mocking rules
- 02Eight rule categories
- 03Prioritized by impact
- 04Rule-specific code examples
Use cases
- 01Configuring MSW test environments
- 02Writing and organizing request handlers
- 03Mocking REST or GraphQL APIs
- 04Troubleshooting handler matching
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ pymodel/ react-frontend-skills --skill mswAfter installing, type/mswin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/advanced-bypass-requests.mdadvanced-cookies-auth.mdadvanced-dynamic-scenarios.mdadvanced-file-uploads.mdadvanced-playwright-integration.mdadvanced-vitest-browser.mdadvanced-websocket-mocking.mddebug-common-issues.mddebug-lifecycle-events.mddebug-request-logging.mddebug-verify-interception.mdgraphql-batched-queries.mdgraphql-error-responses.mdgraphql-operation-handlers.mdgraphql-schema-first.mdgraphql-variables-access.mdhandler-absolute-urls.mdhandler-domain-grouping.mdhandler-happy-path-first.mdhandler-request-body-parsing.mdhandler-resolver-argument.mdhandler-reusability-environments.mdhandler-shared-resolvers.mdhandler-v2-response-syntax.mdmatch-custom-predicate.mdmatch-handler-order.mdmatch-http-methods.mdmatch-query-params.mdmatch-url-patterns.mdresponse-custom-headers.mdDetails
From the project READMEMSW Best Practices
Comprehensive API mocking guide for MSW v2 applications (current: MSW 2.15), designed for AI agents and LLMs. Contains 48 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
Reference these guidelines when:
- Setting up MSW for testing or development
- Writing or organizing request handlers
- Configuring test environments with MSW
- Mocking REST or GraphQL APIs
- Debugging handler matching issues
- Testing error states and edge cases
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Setup & Initialization | CRITICAL | setup- |
| 2 | Handler Architecture | CRITICAL | handler- |
| 3 | Test Integration | HIGH | test- |
| 4 | Response Patterns | HIGH | response- |
| 5 | Request Matching | MEDIUM-HIGH | match- |
| 6 | GraphQL Mocking | MEDIUM | graphql- |
| 7 | Advanced Patterns | MEDIUM | advanced- |
| 8 | Debugging & Performance | LOW | debug- |
Quick Reference
1. Setup & Initialization (CRITICAL)
setup-server-node-entrypoint- Use correct entrypoint for Node.js (msw/node)setup-lifecycle-hooks- Configure server lifecycle in test setupsetup-worker-script-commit- Commit worker script to version controlsetup-node-version- Require Node.js 18+ for MSW v2setup-unhandled-requests- Configure unhandled request behaviorsetup-typescript-config- Configure TypeScript for MSW v2
2. Handler Architecture (CRITICAL)
handler-happy-path-first- Define happy path handlers as baselinehandler-domain-grouping- Group handlers by domainhandler-absolute-urls- Use absolute URLs in handlershandler-shared-resolvers- Extract shared response logic into resolvershandler-v2-response-syntax- Use MSW v2 response syntaxhandler-request-body-parsing- Explicitly parse request bodieshandler-resolver-argument- Destructure resolver arguments correctlyhandler-reusability-environments- Share handlers across environments
3. Test Integration (HIGH)
test-reset-handlers- Reset handlers after each testtest-avoid-request-assertions- Avoid direct request assertionstest-concurrent-boundary- Use server.boundary() for concurrent teststest-fake-timers-config- Configure fake timers to preserve queueMicrotasktest-async-utilities- Use async testing utilities for mock responsestest-clear-request-cache- Clear request library caches between teststest-jsdom-environment- Use correct JSDOM environment for Jest
4. Response Patterns (HIGH)
response-http-response-helpers- Use HttpResponse static methodsresponse-delay-realistic- Add delays only for timing behavior under testresponse-error-simulation- Simulate error responses correctlyresponse-one-time-handlers- Use one-time handlers for sequential scenariosresponse-custom-headers- Set response headers correctlyresponse-streaming- Mock streaming responses with ReadableStream
5. Request Matching (MEDIUM-HIGH)
match-url-patterns- Use URL path parameters correctlymatch-query-params- Access query parameters from request URLmatch-custom-predicate- Use custom predicates for complex matchingmatch-http-methods- Match HTTP methods explicitlymatch-handler-order- Order handlers from specific to general
6. GraphQL Mocking (MEDIUM)
graphql-operation-handlers- Use operation name for GraphQL matchinggraphql-error-responses- Return GraphQL errors in correct formatgraphql-batched-queries- Handle batched GraphQL queriesgraphql-variables-access- Access GraphQL variables correctlygraphql-schema-first- Resolve operations against a GraphQL schema
7. Advanced Patterns (MEDIUM)
advanced-bypass-requests- Use bypass() for passthrough requestsadvanced-cookies-auth- Handle cookies and authenticationadvanced-dynamic-scenarios- Implement dynamic mock scenariosadvanced-vitest-browser- Configure MSW for Vitest browser modeadvanced-file-uploads- Mock file upload endpointsadvanced-websocket-mocking- Mock WebSocket connections with ws.linkadvanced-playwright-integration- Use defineNetworkFixture from @msw/playwright
8. Debugging & Performance (LOW)
debug-lifecycle-events- Use lifecycle events for debuggingdebug-verify-interception- Verify request interception is workingdebug-common-issues- Know common MSW issues and fixesdebug-request-logging- Log request details for debugging
How to Use
Run in the project root first:
npx -y @pymodel/react-frontend-skills detect # installed vs. targeted versions
npx -y @pymodel/react-frontend-skills scan --skill msw # deprecated APIs → rule IDs
Read references/<rule-id>.md for each rule above that matches the task and for each scan hit: why it matters, then incorrect vs. correct code.
Related Skills
- For consuming mocked APIs, see
tanstack-queryskill - For test framework patterns, see
vitest; for methodology, seetdd
Comments
Markdown supported