mcpField
G
graphql-expert-best-practices

graphql-expert-best-practices

github.com/wispbit-ai開発9144 回インストール38 週間前に更新
リポジトリ

graphql-expert-best-practices について

GraphQL API の開発やレビュー向けのルール集です。影響度順に、リゾルバーの性能、スキーマやミューテーションの設計、ページネーション、セキュリティ、運用を例とともに解説します。

主な機能

  1. 01優先度別の GraphQL 指針
  2. 02リゾルバーのバッチ処理とクエリ最適化
  3. 03スキーマとミューテーションの設計規則
  4. 04ページネーションとセキュリティの指針
  5. 05ルールファイル内の例

活用シーン

  1. 01GraphQL コードの性能問題のレビュー
  2. 02リゾルバーとデータ取得処理のリファクタリング
  3. 03スキーマとミューテーションの設計
  4. 04API のセキュリティとページネーションの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/wispbit-ai/skills --skill graphql-expert-best-practices

インストール後、Claude Code で/graphql-expert-best-practicesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

rules/
dataloader-n-plus-one.md
mutation-avoid-validation-scalars.md
mutation-explicit-actions.md
mutation-no-file-uploads.md
mutation-separate-input-types.md
mutation-single-input-object.md
mutation-union-result-types.md
operations-require-client-headers.md
pagination-no-default-totalcount.md
query-unique-identifiers.md
schema-field-overload.md
schema-minimize-nullable-args.md
schema-no-binary-data.md
schema-no-duplicate-fields.md
schema-no-json-filters.md
schema-prefer-deprecation.md
schema-split-types-by-role.md
schema-stable-identifiers.md
schema-structured-types.md
security-complexity-limits.md
security-disable-introspection.md

詳細

GraphQL エキスパートのベストプラクティス

GraphQL API のパフォーマンス最適化とベストプラクティスに関する包括的なガイドです。リゾルバーの最適化、クエリのパフォーマンス、データ取得パターン、スキーマ設計に関するルールを収録しており、自動リファクタリングとコード生成の指針となるよう、影響度順に優先順位を付けています。

適用するタイミング

以下の場合に、これらのガイドラインを参照してください。

  • GraphQL スキーマ、リゾルバー、型定義を作成するとき
  • データ取得やリゾルバーのロジックを実装するとき
  • パフォーマンス上の問題がないか GraphQL コードをレビューするとき
  • 既存の GraphQL API をリファクタリングするとき
  • クエリの実行やリゾルバーのパフォーマンスを最適化するとき
  • GraphQL サーバーのアーキテクチャを設計するとき

優先度別のルールカテゴリ

優先度カテゴリ影響度プレフィックス
1クエリの最適化CRITICALdataloader-
2スキーマ設計CRITICAL-HIGHschema-
3ミューテーション設計CRITICAL-HIGHmutation-
4ページネーションHIGHpagination-
5セキュリティCRITICAL-MEDIUMsecurity-
6運用MEDIUMoperations-

クイックリファレンス

  • dataloader-n-plus-one - DataLoader を使ってクエリをバッチ処理し、N+1 によるパフォーマンスの問題を防ぎます
  • query-unique-identifiers - 複合パラメーターではなく一意の識別子を使い、API の表面をシンプルにします
  • schema-no-json-filters - 任意の JSON フィルタースカラーを禁止し、NoSQL インジェクションの脆弱性を防ぎます
  • schema-no-binary-data - ペイロードの肥大化やメモリの問題を防ぐため、スキーマに大きなバイナリデータを含めないようにします
  • schema-stable-identifiers - 情報漏えいや列挙攻撃を防ぐため、グローバルに安定した不透明な識別子を使います
  • schema-structured-types - 型安全性を高めるため、非構造化の String/JSON フィールドではなく構造化型を使います
  • schema-split-types-by-role - プライバシー関連フィールドの漏えいを防ぎ、実行時の認可をなくすため、ロールごとに型を分けます
  • schema-prefer-deprecation - 継続的な API の進化を可能にするため、バージョン管理より非推奨化を優先します
  • schema-field-overload - セキュリティ上の問題を防ぎ、API を分かりやすくするため、viewer と user のフィールドをオーバーロードしないようにします
  • schema-minimize-nullable-args - API を分かりやすくし、型安全性を高めるため、nullable な引数を最小限にします
  • schema-no-duplicate-fields - 信頼できる唯一の情報源を維持するため、ネストしたオブジェクト経由でアクセスできる重複フィールドを防ぎます
  • mutation-no-file-uploads - メモリ枯渇やセキュリティの脆弱性を防ぐため、GraphQL 経由でファイルをアップロードしないようにします
  • mutation-single-input-object - API の拡張性を高めるため、複数のスカラー引数ではなく単一の入力オブジェクト引数を使います
  • mutation-union-result-types - 型安全なエラーハンドリングのため、成功型と具体的なエラー型を持つユニオン型を返します
  • mutation-explicit-actions - 汎用的な更新パターンではなく、明示的なアクションを中心にミューテーションを設計します
  • mutation-separate-input-types - 型安全性を高めるため、作成と更新で入力型を分けます
  • mutation-avoid-validation-scalars - 複数リクエストにまたがるエラーループを防ぐため、カスタムバリデーションスカラーを避けます
  • pagination-no-default-totalcount - パフォーマンスの低下を防ぐため、コネクションで totalCount をデフォルトにしないようにします
  • security-complexity-limits - リソース枯渇攻撃を防ぐため、クエリの複雑度とノード数の上限を必須にします
  • security-disable-introspection - スキーマの情報開示を防ぐため、本番環境ではイントロスペクションを無効にします
  • operations-require-client-headers - デバッグとモニタリングのため、クライアント識別ヘッダーを必須にします

使用方法

詳しい説明とコード例については、個々のルールファイルを確認してください。

rules/dataloader-n-plus-one.md
rules/query-unique-identifiers.md
rules/schema-no-json-filters.md
rules/schema-no-binary-data.md
rules/schema-stable-identifiers.md
rules/schema-structured-types.md
rules/schema-split-types-by-role.md
rules/schema-prefer-deprecation.md
rules/schema-field-overload.md
rules/schema-minimize-nullable-args.md
rules/schema-no-duplicate-fields.md
rules/mutation-no-file-uploads.md
rules/mutation-single-input-object.md
rules/mutation-union-result-types.md
rules/mutation-explicit-actions.md
rules/mutation-separate-input-types.md
rules/mutation-avoid-validation-scalars.md
rules/pagination-no-default-totalcount.md
rules/security-complexity-limits.md
rules/security-disable-introspection.md
rules/operations-require-client-headers.md

各ルールファイルには、以下が含まれています。

  • 重要である理由の簡単な説明
  • そのパターンを使用する場合と使用しない場合
  • 実装要件
  • 説明付きの誤ったコード例
  • 説明付きの正しいコード例
  • 追加の背景情報と参考資料

コメント