OpenAPI Contract Completeness · v0.1.0 · 2026-06-29 · sha256 83e795048b90e13e

OpenAPI Contract Completeness v0.1.0A

Immutable. This exact content is served forever at /api/v1/blob/83e795048b90e13e.

---
id: 'openapi-contract'
name: 'OpenAPI Contract Completeness'
description: 'Ensure OpenAPI specs define consistent request/response schemas, error model, auth, pagination, and backward compatibility.'
version: 0.1.0
category: upstream
phase: upstream
applyTo:
  - '**/openapi/**/*.{yml,yaml,json}'
  - '**/*openapi*.{yml,yaml,json}'
  - '**/*swagger*.{yml,yaml,json}'
  - '**/*api*.{yml,yaml,json}'
  - 'docs/**/*api*.md'
tags: [api, openapi, contract, upstream]
severity: major
inputContext: [diff, fullFile, adr]
outputKind: [summary, findings, actions, questions]
modelHint: balanced
dependencies: [repo_metadata]
---

## Pattern declaration

Primary pattern: Reviewer
Secondary patterns: Inversion
Why: OpenAPI仕様の差分から契約不備・互換性事故・型の曖昧さをレビューし、クライアント側の破綻シナリオを逆照射する。

## Goal / 目的

- OpenAPI(または同等の API 仕様)の差分から、契約不備による実装ブレ/互換性事故/運用不全を減らす。

## Non-goals / 扱わないこと

- API の “正解設計” を断定しない(契約の一貫性・明確さ・互換性・運用可能性に限定)。
- 実装コードの最適化やライブラリ選定。

## Pre-execution Gate / 実行前ゲート

このスキルは以下の条件がすべて満たされない限り`NO_REVIEW`を返す。

- [ ] 差分にOpenAPI/Swagger仕様ファイルまたはAPI設計ドキュメントが含まれている
- [ ] inputContextにdiffが含まれている

ゲート不成立時の出力: `NO_REVIEW: rr-upstream-openapi-contract-001 — OpenAPI/API仕様に関する差分がない`

## False-positive guards / 抑制条件

- 仕様の不足が差分外で既に合意済み(別ドキュメント参照)で、参照が明確な場合は重複指摘しない。

## Rule / ルール

- 先頭に要約を 1 行出す(追加/変更された endpoint と互換性の要点)。
- 指摘は最大 8 件まで。互換性破壊/曖昧な型/エラーモデル不統一/認可抜けを優先。
- 可能な限り “追記案(仕様に貼れる形)” を付ける。

## Checklist / 観点チェックリスト

- 型とバリデーション
  - `required`/`nullable`/`oneOf`/`anyOf`/`format` が曖昧でないか。
  - request/response の例(example)が現実的で、破綻していないか。
- エラー契約
  - 4xx/5xx の使い分け、エラー構造(code/message/detail/requestId 等)が一貫しているか。
  - 再試行可能性(retryable)や rate limit の扱いが読み取れるか。
- 認証/認可
  - `securitySchemes` と各 operation の `security` が整合しているか。
  - 権限境界(誰が何をできるか)が仕様に落ちているか(役割/スコープ)。
- 互換性
  - 破壊的変更(削除/rename/型変更)がある場合、バージョニングや移行方針があるか。
  - pagination / sorting / filtering の契約が曖昧でないか。
- 運用性
  - `requestId`/相関ID 等、障害調査に必要な情報が契約に反映されているか。

## Output / 出力フォーマット

すべて日本語。`<file>:<line>: <message>` 形式で出力する。

- 先頭に要約を 1 行: `(summary):1: <追加/変更endpointと互換性の要点>`
- 以降は指摘(最大 8 件):
  - `<message>` に `[severity=critical|major|minor|info]` を含める。
  - “追記案” を 1 行付ける(例: `エラーレスポンスは { code, message, requestId } を共通化`)。

## 評価指標(Evaluation)

- 合格基準: 差分に紐づく契約不備が優先度付きで指摘され、仕様に貼れる追記案がある。
- 不合格基準: 仕様と無関係な一般論、根拠のない断定、指摘の洪水。

## 人間に返す条件(Human Handoff)

- 互換性破壊の判断やバージョニング方針が未合意の場合は人間レビューへ返す。