graphql-expert-best-practices について
GraphQL API の開発やレビュー向けのルール集です。影響度順に、リゾルバーの性能、スキーマやミューテーションの設計、ページネーション、セキュリティ、運用を例とともに解説します。
主な機能
- 01優先度別の GraphQL 指針
- 02リゾルバーのバッチ処理とクエリ最適化
- 03スキーマとミューテーションの設計規則
- 04ページネーションとセキュリティの指針
- 05ルールファイル内の例
活用シーン
- 01GraphQL コードの性能問題のレビュー
- 02リゾルバーとデータ取得処理のリファクタリング
- 03スキーマとミューテーションの設計
- 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.mdmutation-avoid-validation-scalars.mdmutation-explicit-actions.mdmutation-no-file-uploads.mdmutation-separate-input-types.mdmutation-single-input-object.mdmutation-union-result-types.mdoperations-require-client-headers.mdpagination-no-default-totalcount.mdquery-unique-identifiers.mdschema-field-overload.mdschema-minimize-nullable-args.mdschema-no-binary-data.mdschema-no-duplicate-fields.mdschema-no-json-filters.mdschema-prefer-deprecation.mdschema-split-types-by-role.mdschema-stable-identifiers.mdschema-structured-types.mdsecurity-complexity-limits.mdsecurity-disable-introspection.md詳細
GraphQL エキスパートのベストプラクティス
GraphQL API のパフォーマンス最適化とベストプラクティスに関する包括的なガイドです。リゾルバーの最適化、クエリのパフォーマンス、データ取得パターン、スキーマ設計に関するルールを収録しており、自動リファクタリングとコード生成の指針となるよう、影響度順に優先順位を付けています。
適用するタイミング
以下の場合に、これらのガイドラインを参照してください。
- GraphQL スキーマ、リゾルバー、型定義を作成するとき
- データ取得やリゾルバーのロジックを実装するとき
- パフォーマンス上の問題がないか GraphQL コードをレビューするとき
- 既存の GraphQL API をリファクタリングするとき
- クエリの実行やリゾルバーのパフォーマンスを最適化するとき
- GraphQL サーバーのアーキテクチャを設計するとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | クエリの最適化 | CRITICAL | dataloader- |
| 2 | スキーマ設計 | CRITICAL-HIGH | schema- |
| 3 | ミューテーション設計 | CRITICAL-HIGH | mutation- |
| 4 | ページネーション | HIGH | pagination- |
| 5 | セキュリティ | CRITICAL-MEDIUM | security- |
| 6 | 運用 | MEDIUM | operations- |
クイックリファレンス
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
各ルールファイルには、以下が含まれています。
- 重要である理由の簡単な説明
- そのパターンを使用する場合と使用しない場合
- 実装要件
- 説明付きの誤ったコード例
- 説明付きの正しいコード例
- 追加の背景情報と参考資料
コメント
Markdown 対応