mcpField
D
docyrus-api-doctor

docyrus-api-doctor

github.com/docyrusテスト・品質1391 回インストール5 週間前に更新
リポジトリ

docyrus-api-doctor について

docyrus-api-doctor は、Docyrus API を扱う開発者向けの実装後チェックリストスキルです。バグ、パフォーマンス、コード品質を確認でき、詳細な解説と修正例も参照できます。

主な機能

  1. 01API 呼び出しとクエリパラメーターの確認
  2. 02性能とデータ取得の問題を検出
  3. 03エラー処理とキャッシュ無効化の確認
  4. 04詳細なチェック項目と修正例

活用シーン

  1. 01変更した Docyrus API ロジックのレビュー
  2. 02不正なクエリペイロードの検出
  3. 03ミューテーション処理とキャッシュ更新の確認

インストール

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

$npx skills add https://github.com/docyrus/agent-skills --skill docyrus-api-doctor

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

同梱ファイルreferences/checklist-details.md

詳細

Docyrus API ドクター

Docyrus API コードの実装後チェックリストです。API ロジックを作成または変更した後、該当するチェックをすべて実施してください。タスクを完了とする前に、見つかった問題をすべて修正してください。

使い方: API ロジックを実装した後、変更したコードを以下の各チェックと照らし合わせて確認します。対象のコードに当てはまらないチェックはスキップしてください。詳しい説明と修正例については、references/checklist-details.md をお読みください。


バグ — エラーの原因になります

#チェック確認する内容
B1columns パラメーターの指定漏れ.list() または .get() の呼び出しで、columns プロパティが指定されていない箇所。指定しない場合、id のみが返されます。
B2クエリペイロード内の limit: 0limit を 0 に設定すると API エラーになります。limit を完全に削除するか、正の整数を設定してください。
B3columns に含まれていない子クエリキーchildQueries で orders というキーを定義している場合、文字列 orders も columns に含める必要があります。
B4columns に含まれていない数式キーformulas で total というキーを定義している場合、文字列 total も columns に含める必要があります。
B5@ 列構文による集計columns で count@field または sum@field を使用している箇所。代わりに calculations パラメーターを使用してください。
B6calculations との distinctColumns の併用これらは相互に排他的です。集計には calculations を使用してください。
B7数式 extract の入力数extract ブロックの入力数は、必ず 1 つにしてください。
B8数式 not のオペランド数not ブロックのオペランド数は、必ず 1 つにしてください。
B9数式 and/or のオペランド数and/or ブロックには、2 つ以上のオペランドが必要です。
B10数式の算術演算のオペランド数算術演算(+、-、*、/、%)には、2 つ以上のオペランドが必要です。
B11when のない数式 casecase 式には、1 つ以上の when 節が必要です。
B12jsonb_build_object 内の型キャストされていないリテラルjsonb_build_object 内の文字列リテラルには、明示的な "cast": "text" が必要です。自動キャストが機能するのは concat/concat_ws 内のみです。

パフォーマンス — 処理速度の低下やリソースの無駄につながります

#チェック確認する内容
P1集計クエリでの不要な limit生の行データが不要で calculations を使う場合は、limit を送信しないでください。集計結果は通常、グループ化された単一の結果として返されます。
P2合計数を取得するだけの fullCount必要なのが件数のみ(行データは不要)であれば、行を取得しながら fullCount: true を指定するのではなく、calculations: [{ func: 'count', field: 'id', name: 'total' }] を使用してください。
P3計算結果のみを取得するクエリでの不要な columnscalculations を使用し、集計値のみを読み取る場合は、columns を送信しないでください。列を選択しなくても計算結果は返されます。
P4列の過剰な取得columns で選択されているものの、利用側のコードで読み取られていない列。表示または処理する列のみを選択してください。
P5ページネーションなしでの大きな limitoffset/fullCount によるページネーションなしで limit > 200 を指定すると、応答が遅くなり、メモリ使用量が増加するおそれがあります。
P6N+1 を引き起こす expand の指定漏れexpand にフィールドを含めずに、リレーション/列挙型/ユーザーフィールドの .name を表示している箇所。expand がない場合、ID のみが取得されます。
P7存在確認のための行データ取得レコードを取得して、存在するものがあるかどうかだけを確認している箇所。代わりに calculations のカウントを使用してください。
P8重複するクエリ同じデータソースに対して、統合可能な重複列を取得している複数のクエリ。

コード品質 — 保守の負担を招く原因

#チェック項目確認する内容
Q1レスポンスに対する as 型アサーションの多用ランタイム検証を行わず、API レスポンスを as Array<...> でキャストしていないか確認します。型付きコレクションの戻り値を使用するか、検証を追加してください。
Q2依存するクエリでの enabled の指定漏れrecordId などのランタイム値に依存するにもかかわらず、enabled: !!recordId を指定していない useQuery を確認します。クエリが undefined で実行されます。
Q3ミューテーションのエラーハンドリング漏れtry/catch やユーザーへのエラー通知なしで .create()、.update()、.delete() を呼び出していないか確認します。
Q4ミューテーション後のクエリ無効化漏れcreate/update/delete の後、リストを更新するために、関連するクエリキーを無効化する必要があります。
Q5キャッシュを順番に無効化しているawait queryClient.invalidateQueries(...) を複数回続けて実行していないか確認します。互いに独立した無効化には Promise.all() を使用してください。
Q6非推奨の expandTypes の使用expand パラメーターに置き換えてください。
Q7データソースパスのハードコード生成されたコレクションフックを使用せず、client.get('/v1/apps/base/data-sources/project/items') を直接呼び出していないか確認します。
Q8orderBy なしでの distinctColumns の使用distinctColumns では、グループごとにどの行を採用するかを定義するために orderBy が必要です。

実行方法

  1. このタスクで変更されたファイルのうち、Docyrus API 呼び出しを含むファイルをすべて特定します
  2. 各ファイルで .list(、.get(、.create(、.update(、.delete(、client.get(、client.post(、client.patch(、client.delete( を検索します
  3. 各呼び出し箇所を BUG チェック(B1-B12)に照らして確認します
  4. クエリのペイロードを PERFORMANCE チェック(P1-P8)に照らして確認します
  5. 周辺のコード(フック、エラーハンドリング、無効化)を CODE QUALITY チェック(Q1-Q8)に照らして確認します
  6. BUG カテゴリーから順に、見つかった問題をすべて修正します

参照資料

  • references/checklist-details.md — 各チェック項目の詳しい説明、検出パターン、修正前後の例

コメント