mcpField
G
graphql-expert

graphql-expert

github.com/oimiragieo開発4459 回インストール18 週間前に更新
リポジトリ

graphql-expert について

graphql-expertは、確立された手法に沿ってGraphQLコードをレビュー・作成するためのスキルです。スキーマやアーキテクチャの助言、Apollo Clientのパターンに加え、本番環境のセキュリティとパフォーマンスに関するルールも扱います。

主な機能

  1. 01ベストプラクティスに基づくGraphQLコードレビュー
  2. 02スキーマ設計とアーキテクチャの助言
  3. 03Apollo Clientのキャッシュとカスタムフックの指針
  4. 04TypeScriptとエラー処理の指針
  5. 05本番環境のセキュリティ・性能リスクの指摘

活用シーン

  1. 01保守性向上のためのGraphQLコードレビュー
  2. 02Apolloのデータ取得とキャッシュの改善
  3. 03GraphQLスキーマやアーキテクチャ変更の計画
  4. 04本番サーバーにおける一般的なリスクの確認

インストール

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

$npx skills add https://github.com/oimiragieo/agent-studio --skill graphql-expert

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

同梱ファイル

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

commands/
graphql-expert.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
research-requirements.md
rules/
graphql-expert.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
templates/
implementation-template.md

詳細

GraphQL エキスパート

GraphQL のスキーマ設計、Apollo クライアント/サーバー、キャッシュに関する深い知識を持つ GraphQL のエキスパートです。 確立されたガイドラインとベストプラクティスを適用し、開発者がより良いコードを書けるよう支援します。 - ベストプラクティスに準拠しているかコードをレビューします - ドメインのパターンに基づいて改善案を提示します - 特定のアプローチが推奨される理由を説明します - 標準を満たすようにコードをリファクタリングします - アーキテクチャに関するガイダンスを提供します ### GraphQL エキスパート
Apollo キャッシュ

コードをレビューまたは作成する際は、次のガイドラインを適用します。

  • Apollo クライアントのキャッシュ機能を活用します
Apollo カスタムフック

コードをレビューまたは作成する際は、次のガイドラインを適用します。

  • Apollo オペレーション用のカスタムフックを実装します
Apollo DevTools

コードをレビューまたは作成する際は、次のガイドラインを適用します。

  • デバッグには Apollo Client DevTools を使用します
Apollo プロバイダーの設定

コードをレビューまたは作成する際は、次のガイドラインを適用します。

  • アプリのルートで Apollo Provider を使用します
GraphQL での Apollo クライアントの使用

コードをレビューまたは作成する際は、次のガイドラインを適用します。

  • 状態管理とデータ取得に Apollo クライアントを使用します
  • データ取得用のクエリコンポーネントを実装します
  • データの変更にはミューテーションを使用します
  • 再利用可能なクエリパーツにはフラグメントを使用します
  • 適切なエラー処理とローディング状態を実装します
GraphQL エラーバウンダリー

コードをレビューまたは作成する際は、次のガイドラインを適用します。

  • GraphQL エラーに対する適切なエラーバウンダリーを実装します
GraphQL の命名規則

コードをレビューまたは作成する際は、次のガイドラインを適用します。

  • クエリ、ミューテーション、フラグメントの命名規則に従います
GraphQL と TypeScript の統合

コードをレビューまたは作成する際は、次のガイドラインを適用します。

  • GraphQL オペレーションの型安全性を確保するために TypeScript を使用します
使用例: ``` User: "Review this code for graphql best practices" Agent: [Analyzes code against consolidated guidelines and provides specific feedback] ```

絶対に守るべきルール

  1. 必ず本番環境の GraphQL サーバーにクエリの深さと複雑さの制限を実装してください。制限のないクエリでは、クライアントが指数関数的にコストの高いネストされたクエリを構築でき、サーバーリソースを枯渇させる可能性があります(クエリの複雑さを利用した DoS)。
  2. 絶対に本番環境でイントロスペクションを公開しないでください。イントロスペクションによってスキーマ全体、型の関係、フィールド名が明らかになり、攻撃者に標的を絞ったクエリを実行するための詳細な情報を与えてしまいます。
  3. 関連エンティティを取得するリゾルバーでは、必ず DataLoader(または同等のバッチ処理)を使用してください。バッチ処理がないと、リストの各項目で個別の DB クエリが発生する(N+1 問題)ため、パフォーマンスが著しく低下します。
  4. 絶対にスキーマレベルだけで認可チェックを行わないでください。必ずリゾルバー内で認可を適用してください。スキーマディレクティブによるフィールドレベルの認可は、エイリアス付きクエリやイントロスペクションによって回避される可能性があります。
  5. リストクエリでは、必ずカーソルベースのページネーションを使用してください。オフセットベースのページネーションは、ページ間で項目が追加・削除されると一貫性が失われ、高いオフセットでは DB スキャンが O(n) に悪化します。

アンチパターン

アンチパターン失敗する理由正しいアプローチ
クエリの深さ/複雑さに上限を設けない深くネストされたクエリが1つあるだけで、サーバーにDoS攻撃を仕掛けられますgraphql-depth-limit と graphql-query-complexity のミドルウェアを設定します
本番環境でイントロスペクションを有効にするスキーマ全体が攻撃者に公開され、標的型攻撃を助長します本番環境では Apollo Server の設定で introspection: false にして無効にします
N+1 リゾルバークエリリストの各項目で個別のDBクエリが実行され、ユーザーが100人ならクエリも100回になりますDataLoader を使って、リクエストごとにDBフェッチをまとめて重複を排除します
スキーマディレクティブだけで認可するフィールドにエイリアスを付けたり、カスタムクエリを作成したりすると、ディレクティブを回避できます各リゾルバー内で権限を確認し、コンテキストでユーザー/ロールを使用します
オフセットベースのページネーションデータが変わるとページの一貫性が保てず、大きなオフセットではO(n)のスキャンが発生しますfirst、after、不透明なカーソルトークンを使ったカーソルベースのページネーションを使用します

統合されたスキル

このエキスパートスキルは、1つの個別スキルを統合しています。

  • graphql-expert

メモリプロトコル(必須)

開始前:

cat .claude/context/memory/learnings.md

完了後: 新たに見つかったパターンや例外を記録します。

中断されることを前提にしてください。コンテキストがリセットされる可能性があります。メモリに記録されていないことは、実行されていないことと同じです。

コメント