wp-rest-api-development について
WordPress のプラグイン、テーマ、カスタムコード向け REST API レビュー用スキルです。開発者がルート、認可、リクエスト検証、レスポンス設計を確認でき、重大度とファイル位置を添えて指摘を報告します。
主な機能
- 01ルート登録と権限の確認
- 02リクエスト検証とサニタイズの確認
- 03レスポンス形式とステータスコードの評価
- 04REST APIの一般的なリスクパターンの検査
- 05重大度と位置を添えた指摘報告
活用シーン
- 01カスタムRESTエンドポイントの監査
- 02WP_REST_Request処理のレビュー
- 03ヘッドレスアプリ向けバージョン付きAPIの設計
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jorgerosal/ wordpress-skills --skill wp-rest-api-developmentインストール後、Claude Code で/wp-rest-api-developmentを入力して読み込まれたか確認します。
同梱ファイルreferences/route-patterns.mdreferences/schema-and-auth-guide.md
詳細
WordPress REST API 開発スキル
概要
WordPress のプラグイン、テーマ、カスタムコードを対象に、REST API を体系的にレビューします。基本原則: すべてのルートに、明確な契約、明示的な認可、検証済みの入力、予測可能な出力が必要です。レビューでは、ルート登録、コントローラーパターン、リクエストの解析、スキーマと引数の検証、レスポンスの形式、キャッシュへの影響、互換性に関する懸念を確認します。必要に応じて、行番号、重要度ラベル、BAD/GOOD のコード例を添えて指摘事項を報告します。
使用する場面
次の場合に使用します:
register_rest_route()の使用状況をレビューする- カスタム API エンドポイントやコントローラークラスを監査する
permission_callbackのロジックを確認するWP_REST_Requestの入力処理を検証する- レスポンスの形式、ステータスコード、スキーマをレビューする
- ヘッドレスアプリやブロック駆動型アプリ向けに、バージョン管理されたエンドポイントを設計する
次の場合には使用しないでください:
- REST に重点を置かない一般的なプラグインアーキテクチャの確認(wp-plugin-development を使用)
- プラグイン全体を対象としたセキュリティのみのレビュー(wp-security-review を使用)
- WooCommerce エンドポイントの全面的なレビュー(WC 固有の場合は wp-woocommerce-dev を使用)
- GraphQL 固有のガイダンス
コードレビューワークフロー
-
REST の使用箇所を特定する
- プラグインのブートストラップ内にあるルートコールバック
WP_REST_Controllerを拡張するコントローラークラス- ヘッドレスフロントエンドとの連携
- 管理者専用の内部 API の使用
-
まずルート登録を確認する
- 名前空間とバージョンの形式
- HTTP メソッドが操作の意図に合っているか
permission_callbackが設定され、具体的であるか- リクエスト検証用の
args定義
-
リクエスト処理をレビューする
- 生のグローバル変数ではなく、
$request->get_param()または型付きゲッターを使用する - すべてのユーザー入力を検証し、サニタイズする
- 不正な形式の入力は、意味のある
WP_Errorで拒否する
- 生のグローバル変数ではなく、
-
レスポンス設計をレビューする
- 一貫したレスポンス形式
- 適切なステータスコード
- 有用な場合は
rest_ensure_response()を使用する - 内部情報を漏えいさせない
-
CRITICAL/WARNING/INFO に該当するパターンを確認する
- CRITICAL:
permission_callbackの欠落、__return_trueを使った書き込みルート、生のグローバル変数、安全でない DB クエリ - WARNING: スキーマの不整合、弱い入力検証、レスポンス形式の混在、ページネーション情報の欠落
- INFO: コントローラークラスの使用、スキーマの再利用、バージョン管理の整理を検討できる
- CRITICAL:
-
相互参照を添えて報告する
- 認証または nonce の問題が中心の場合は、
/wp-sec-reviewを提案する - ルートのロジックがプラグインアーキテクチャに大きく関わる場合は、
/wp-plugin-reviewを提案する
- 認証または nonce の問題が中心の場合は、
ファイルタイプ別の確認項目
ルート登録(register_rest_route)
- CRITICAL:
permission_callbackの欠落 - CRITICAL:書き込みエンドポイントでの
'permission_callback' => '__return_true' - WARNING:名前空間にバージョン部分がない
- WARNING:
rest_api_initの外でルートを登録している - INFO:コントローラーメソッドを使うべきインラインコールバックの重複
権限コールバック
- CRITICAL:非公開データに対する権限チェックの欠落
- WARNING:管理者向けの操作でコールバックが常に true を返す
- WARNING:ユーザー固有のリソースに対する所有者チェックの欠落
- INFO:繰り返し使われる権限ロジックを一元化できる
リクエスト引数と検証
- CRITICAL:エンドポイントのコールバック内で生の
$_GET/$_POSTを使用している - WARNING:
sanitize_callbackまたはvalidate_callbackの欠落 - WARNING:既知の値に対する enum/形式の制約がない
- INFO:再利用可能な項目スキーマを定義できる
レスポンス処理
- WARNING:ルート間で成功レスポンスの形式が混在している
- WARNING:REST コールバック内でレスポンスデータを返さずに
wp_send_json()を使用している - INFO:ヘッダーやステータスを制御するために
WP_REST_Responseを使用できる
すばやく検出するための検索パターン(API-21)
REST API をすばやくスキャンするには、以下の rg コマンドを使用します。重要度別に整理しています。
CRITICAL パターン
# register_rest_route candidates
rg -n "register_rest_route\s*\(" . -g '*.php'
# permission_callback returning true
rg -n "permission_callback.*__return_true" . -g '*.php'
# Raw superglobals inside REST callbacks
rg -n "\$_GET|\$_POST|\$_REQUEST" . -g '*.php'
WARNING パターン
# WP_REST_Request usage without obvious validation helpers
rg -n "WP_REST_Request|get_param\s*\(" . -g '*.php'
# REST callbacks using wp_send_json
rg -n "wp_send_json|wp_send_json_success|wp_send_json_error" . -g '*.php'
# Route namespaces to inspect for versioning
rg -n "register_rest_route\s*\(\s*['\"][^'\"]+" . -g '*.php'
INFO パターン
# WP_REST_Controller classes
rg -n "extends\s+WP_REST_Controller" . -g '*.php'
# rest_ensure_response usage
rg -n "rest_ensure_response|new\s+WP_REST_Response" . -g '*.php'
参考ファイル
references/route-patterns.md- ルート登録、コントローラーの構成、名前空間の設計references/schema-and-auth-guide.md- Args スキーマ、権限コールバック、入力検証、レスポンス設計
出力形式(API-23)
各指摘には、次の内容を含めてください。
- 重要度:
CRITICAL、WARNING、INFOのいずれか - ファイルと行番号
- 問題の概要
- WordPress REST API の動作にとって重要な理由
- 推奨される修正
問題が見つからない場合は、その旨を明確に伝え、テストの不足、スキーマドキュメントの不整合、バージョニング戦略の限定性など、残っている課題があれば記載してください。