msw
MSW(Mock Service Worker)を使ったAPIモックのベストプラクティスを提供するスキルです。MSWのセットアップ、リクエストハンドラーの記述、HTTP APIのモック化を行う際に使用してください。一般的なテストパターン(test-vitest や test-tdd スキルを使用)やテスト手法については対象外です。
description の原文を見る
MSW (Mock Service Worker) best practices for API mocking in tests (formerly test-msw). This skill should be used when setting up MSW, writing request handlers, or mocking HTTP APIs. This skill does NOT cover general testing patterns (use test-vitest or test-tdd skills) or test methodology.
SKILL.md 本文
MSW ベストプラクティス
MSW v2 アプリケーション向けの包括的な API モッキングガイドであり、AI エージェントと LLM 向けに設計されています。8 つのカテゴリにわたって 45 のルールを含み、自動リファクタリングとコード生成をガイドするため、影響度でプライオリティ付けされています。
適用時期
以下の場面でこのガイドラインを参照してください:
- テストまたは開発用に MSW をセットアップする場合
- リクエストハンドラーを作成または整理する場合
- MSW でテスト環境を構成する場合
- REST または GraphQL API をモックする場合
- ハンドラーマッチングの問題をデバッグする場合
- エラー状態とエッジケースをテストする場合
ルールカテゴリプライオリティ順
| プライオリティ | カテゴリ | インパクト | プレフィックス |
|---|---|---|---|
| 1 | セットアップ・初期化 | CRITICAL | setup- |
| 2 | ハンドラーアーキテクチャ | CRITICAL | handler- |
| 3 | テスト統合 | HIGH | test- |
| 4 | レスポンスパターン | HIGH | response- |
| 5 | リクエストマッチング | MEDIUM-HIGH | match- |
| 6 | GraphQL モッキング | MEDIUM | graphql- |
| 7 | 高度なパターン | MEDIUM | advanced- |
| 8 | デバッグ・パフォーマンス | LOW | debug- |
クイックリファレンス
1. セットアップ・初期化 (CRITICAL)
setup-server-node-entrypoint- Node.js の正しいエントリポイントを使用する (msw/node)setup-lifecycle-hooks- テストセットアップでサーバーライフサイクルを構成するsetup-worker-script-commit- ワーカースクリプトをバージョン管理にコミットするsetup-node-version- MSW v2 には Node.js 18 以上が必要setup-unhandled-requests- 未処理リクエストの動作を構成するsetup-typescript-config- MSW v2 向けに TypeScript を構成する
2. ハンドラーアーキテクチャ (CRITICAL)
handler-happy-path-first- ハッピーパスハンドラーをベースラインとして定義するhandler-domain-grouping- ハンドラーをドメインでグループ化するhandler-absolute-urls- ハンドラーで絶対 URL を使用するhandler-shared-resolvers- 共有レスポンスロジックをリゾルバーに抽出するhandler-v2-response-syntax- MSW v2 レスポンス構文を使用するhandler-request-body-parsing- リクエストボディを明示的にパースするhandler-resolver-argument- リゾルバー引数を正しく分割代入するhandler-reusability-environments- 環境間でハンドラーを共有する
3. テスト統合 (HIGH)
test-reset-handlers- 各テスト後にハンドラーをリセットするtest-avoid-request-assertions- リクエストの直接的なアサーションを避けるtest-concurrent-boundary- 並行テストに server.boundary() を使用するtest-fake-timers-config- queueMicrotask を保持するようフェイクタイマーを構成するtest-async-utilities- モックレスポンスに非同期テストユーティリティを使用するtest-clear-request-cache- テスト間でリクエストライブラリキャッシュをクリアするtest-jsdom-environment- Jest に正しい JSDOM 環境を使用する
4. レスポンスパターン (HIGH)
response-http-response-helpers- HttpResponse 静的メソッドを使用するresponse-delay-realistic- 現実的なレスポンス遅延を追加するresponse-error-simulation- エラーレスポンスを正しくシミュレートするresponse-one-time-handlers- 段階的シナリオに一度限りのハンドラーを使用するresponse-custom-headers- レスポンスヘッダーを正しく設定するresponse-streaming- ReadableStream でストリーミングレスポンスをモックする
5. リクエストマッチング (MEDIUM-HIGH)
match-url-patterns- URL パスパラメーターを正しく使用するmatch-query-params- リクエスト URL からクエリパラメーターにアクセスするmatch-custom-predicate- 複雑なマッチングにカスタムプレディケートを使用するmatch-http-methods- HTTP メソッドを明示的にマッチさせるmatch-handler-order- ハンドラーを具体的なものから一般的なものへと順序付ける
6. GraphQL モッキング (MEDIUM)
graphql-operation-handlers- GraphQL マッチングに操作名を使用するgraphql-error-responses- GraphQL エラーを正しい形式で返すgraphql-batched-queries- バッチ処理された GraphQL クエリを処理するgraphql-variables-access- GraphQL 変数に正しくアクセスする
7. 高度なパターン (MEDIUM)
advanced-bypass-requests- パススルーリクエストに bypass() を使用するadvanced-cookies-auth- クッキーと認証を処理するadvanced-dynamic-scenarios- 動的モックシナリオを実装するadvanced-vitest-browser- Vitest ブラウザーモード用に MSW を構成するadvanced-file-uploads- ファイルアップロードエンドポイントをモックする
8. デバッグ・パフォーマンス (LOW)
debug-lifecycle-events- デバッグにライフサイクルイベントを使用するdebug-verify-interception- リクエストインターセプトが機能しているか検証するdebug-common-issues- MSW の一般的な問題と修正を知るdebug-request-logging- デバッグ用にリクエスト詳細をログする
使用方法
詳細な説明とコード例については、個別のリファレンスファイルをご覧ください:
セクション定義- カテゴリ構造とインパクトレベルルールテンプレート- 新しいルール追加用テンプレート- 個別ルール:
references/{prefix}-{slug}.md
関連スキル
- OpenAPI から MSW モックを生成する場合は、
orvalスキルを参照 - モック API を利用する場合は、
tanstack-queryスキルを参照 - テスト方法論については、
test-vitestまたはtest-tddスキルを参照
完全なコンパイルドキュメント
すべてのルール拡張版の完全ガイド: AGENTS.md
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- pproenca
- リポジトリ
- pproenca/dot-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/pproenca/dot-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。