mcpField
A
api-designer

api-designer

github.com/zhaono1開発85701 回インストール10 週間前に更新
リポジトリ

api-designer について

api-designerは、RESTとGraphQL APIの設計、レビュー、改善を支援するスキルです。設計指針に加え、API設計ドキュメントの生成・検証スクリプトを備えています。

主な機能

  1. 01RESTリソースとHTTPメソッドの指針
  2. 02GraphQLスキーマ設計の実践事項
  3. 03バージョン管理・認証・レート制限の指針
  4. 04APIドキュメントの要件
  5. 05ひな形生成と検証スクリプト

活用シーン

  1. 01RESTまたはGraphQL APIの新規設計
  2. 02既存API設計のレビュー
  3. 03API設計ドキュメントの生成
  4. 04スクリプトによる設計ドキュメントの確認

インストール

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

$npx skills add https://github.com/zhaono1/agent-playbook --skill api-designer

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

同梱ファイル

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

README.md
references/
graphql-patterns.md
rest-patterns.md
scripts/
generate_api.py
validate_api.py

詳細

API 設計

堅牢で、スケーラブルかつ保守しやすい REST および GraphQL API の設計に精通しています。

このスキルが有効になるタイミング

次の場合に有効になります。

  • 新しい API を設計する
  • API 設計をレビューする
  • 既存の API を改善する
  • API 仕様を作成する

REST API 設計の原則

1. リソース指向の設計

推奨:

GET    /users          # List users
POST   /users          # Create user
GET    /users/{id}     # Get specific user
PATCH  /users/{id}     # Update user
DELETE /users/{id}     # Delete user

避ける例:

POST   /getUsers       # Should be GET
POST   /users/create  # Redundant
GET    /users/get/{id} # Redundant
2. HTTP メソッド
メソッド安全性冪等性用途
GET✓✓リソースの読み取り
POST✗✗リソースの作成
PUT✗✓リソースの置き換え
PATCH✗✗リソースの更新
DELETE✗✓リソースの削除
3. ステータスコード
コード意味用途
200OKGET、PATCH、DELETE の成功
201CreatedPOST の成功
204No Contentボディなしの DELETE の成功
400Bad Request無効な入力
401Unauthorized認証情報がない、または無効
403Forbidden認証済みだが、認可されていない
404Not Foundリソースが存在しない
409Conflictリソースがすでに存在する
422Unprocessable構文は有効だが、意味上のエラーがある
429Too Many Requestsレート制限を超過
500Internal Server Errorサーバーエラー
4. 命名規則
  • URL:kebab-case(/user-preferences)
  • JSON:camelCase({"userId": "123"})
  • クエリパラメーター:snake_case または camelCase(?page_size=10)
5. ページネーション
GET /users?page=1&page_size=20

Response:
{
  "data": [...],
  "pagination": {
    "page": 1,
    "page_size": 20,
    "total": 100,
    "total_pages": 5
  }
}
6. フィルタリングとソート
GET /users?status=active&sort=-created_at,name

# -created_at = descending
# name = ascending

GraphQL API 設計

スキーマ設計
type Query {
  user(id: ID!): User
  users(limit: Int, offset: Int): UserConnection!
}

type Mutation {
  createUser(input: CreateUserInput!): CreateUserPayload!
  updateUser(id: ID!, input: UpdateUserInput!): UpdateUserPayload!
}

type User {
  id: ID!
  email: String!
  profile: Profile
  posts(first: Int, after: String): PostConnection!
}

type UserConnection {
  edges: [UserEdge!]!
  pageInfo: PageInfo!
}

type UserEdge {
  node: User!
  cursor: String!
}

type PageInfo {
  hasNextPage: Boolean!
  hasPreviousPage: Boolean!
  startCursor: String
  endCursor: String
}
ベストプラクティス
  • Null 許容性:デフォルトでは非 null とし、適切な場合にのみ null を許容します
  • コネクション:リストにはカーソルベースのページネーションを使用します
  • ペイロード:一貫したエラー処理のためにミューテーションペイロードを使用します
  • 説明:すべての型とフィールドを文書化します

API のバージョン管理

方法

URL バージョン管理(推奨):

/api/v1/users
/api/v2/users

ヘッダーによるバージョン管理:

GET /users
Accept: application/vnd.myapi.v2+json
バージョン管理のガイドライン
  • v1 から始めます
  • 可能な限り後方互換性を維持します
  • 旧バージョンは事前に通知して非推奨にします
  • 互換性を破る変更を文書化します

認証と認可

認証方法
  1. JWT ベアラートークン
Authorization: Bearer <token>
  1. API キー
X-API-Key: <key>
  1. OAuth 2.0
Authorization: Bearer <access_token>
認可
  • ロール/権限を使用します
  • エンドポイントごとに必要な権限を文書化します
  • 認可に失敗した場合は 403 を返します

レート制限

HTTP/1.1 200 OK
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1631234567

推奨される制限:

  • パブリック API:100〜1000 リクエスト/時間
  • 認証済み API:1000〜10000 リクエスト/時間
  • Webhook:10〜100 リクエスト/分

ドキュメントの要件

  • すべてのエンドポイントを文書化する
  • リクエスト/レスポンスの例
  • 認証要件
  • エラーレスポンスの形式
  • レート制限
  • SDK の例(利用可能な場合)

スクリプト

API のひな形を生成:

python3 scripts/generate_api.py --name <resource-name> --output api-design.md

API 設計を検証:

python3 scripts/validate_api.py --input api-design.md

参考資料

コメント