mcpField
D
designing-apis

designing-apis

github.com/cloudai-x開発1.4k174 回インストール4 週間前に更新
リポジトリ

designing-apis について

RESTまたはGraphQLインターフェースを設計する開発者向けのスキルです。エンドポイント、データ形式、エラー、セキュリティ、OpenAPI文書を扱う手順とチェックリストを提供します。

主な機能

  1. 01APIリソースとエンドポイントの設計
  2. 02RESTとGraphQLのパターン
  3. 03リクエストとレスポンス形式
  4. 04バージョニングとエラー処理
  5. 05認証とセキュリティのチェックリスト
  6. 06OpenAPI文書テンプレート

活用シーン

  1. 01新しいREST API契約の設計
  2. 02GraphQLスキーマと操作の定義
  3. 03APIのセキュリティと一貫性の確認

インストール

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

$npx skills add https://github.com/cloudai-x/claude-workflow-v2 --skill designing-apis

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

同梱ファイルOPENAPI-TEMPLATE.md

詳細

API の設計

読み込むタイミング
  • トリガー:REST または GraphQL のエンドポイント、API コントラクト、バージョニング、リクエスト/レスポンス形式を設計するとき
  • スキップ:API サーフェスのない内部専用コードの場合

API 設計ワークフロー

このチェックリストをコピーして、進捗を記録してください。

API Design Progress:
- [ ] Step 1: Define resources and relationships
- [ ] Step 2: Design endpoint structure
- [ ] Step 3: Define request/response formats
- [ ] Step 4: Plan error handling
- [ ] Step 5: Add authentication/authorization
- [ ] Step 6: Document with OpenAPI spec
- [ ] Step 7: Validate design against checklist

REST API の設計

URL 構造
# Resource-based URLs (nouns, not verbs)
GET    /users              # List users
GET    /users/:id          # Get user
POST   /users              # Create user
PUT    /users/:id          # Replace user
PATCH  /users/:id          # Update user
DELETE /users/:id          # Delete user

# Nested resources
GET    /users/:id/orders   # User's orders
POST   /users/:id/orders   # Create order for user

# Query parameters for filtering/pagination
GET    /users?role=admin&status=active
GET    /users?page=2&limit=20&sort=-createdAt
HTTP ステータスコード
コード意味使用例
200OKGET、PUT、PATCH の成功
201作成済みPOST の成功
204コンテンツなしDELETE の成功
400不正なリクエスト入力が無効
401認証されていない認証情報がない/無効
403禁止認証は有効だが、権限がない
404見つからないリソースが存在しない
409競合重複、状態の競合
422処理できない検証に失敗
429リクエストが多すぎるレート制限
500内部エラーサーバーエラー
レスポンス形式

成功レスポンス:

{
  "data": {
    "id": "123",
    "type": "user",
    "attributes": {
      "name": "John Doe",
      "email": "[email protected]"
    }
  },
  "meta": {
    "requestId": "abc-123"
  }
}

ページネーション付きリストレスポンス:

{
  "data": [...],
  "meta": {
    "total": 100,
    "page": 1,
    "limit": 20,
    "totalPages": 5
  },
  "links": {
    "self": "/users?page=1",
    "next": "/users?page=2",
    "last": "/users?page=5"
  }
}

エラーレスポンス:

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid input data",
    "details": [
      {
        "field": "email",
        "message": "Must be a valid email address"
      }
    ]
  },
  "meta": {
    "requestId": "abc-123"
  }
}

API のバージョニング

URL によるバージョニング(推奨):

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

ヘッダーによるバージョニング:

Accept: application/vnd.example.v1+json

認証パターン

JWT ベアラートークン:

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

API キー:

X-API-Key: your-api-key

レート制限ヘッダー

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1609459200
Retry-After: 60

GraphQL パターン

スキーマ設計:

# Abbreviated: input, connection and error types omitted for brevity
type Query {
  user(id: ID!): User
  users(filter: UserFilter, pagination: Pagination): UserConnection!
}

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

type User {
  id: ID!
  name: String!
  email: String!
  orders(first: Int, after: String): OrderConnection!
}

input CreateUserInput {
  name: String!
  email: String!
}

type UserPayload {
  user: User
  errors: [Error!]
}

OpenAPI 仕様テンプレート

OpenAPI 3.0 仕様テンプレートの全文は、OPENAPI-TEMPLATE.md を参照してください。

API 設計の検証

設計を完了したら、次のチェックリストに照らして検証してください。

Validation Checklist:
- [ ] All endpoints use nouns, not verbs
- [ ] HTTP methods match operations correctly
- [ ] Consistent response format across endpoints
- [ ] Error responses include actionable details
- [ ] Pagination implemented for list endpoints
- [ ] Authentication defined for protected endpoints
- [ ] Rate limiting headers documented
- [ ] OpenAPI spec is complete and valid

検証に失敗した場合は、該当する設計手順に戻って問題に対処してください。

セキュリティチェックリスト

  • HTTPS のみ
  • すべてのエンドポイントで認証
  • 認可チェック
  • 入力の検証
  • レート制限
  • リクエストサイズの制限
  • CORS の適切な設定
  • URL に機密データを含めない
  • 監査ログ

コメント