PullLog の API 契約正本 を管理する OpenAPI 3.0 リポジトリです。
contract/api-schema.yaml を中心に、frontend/ と backend/stable/ の最新実装との差分を継続監査し、contract-first + agent-assisted review で整合性を維持します。
用語方針: PullLog 全体は workspace、
contract/など各トップレベルディレクトリは subproject と呼びます。正式な定義は../pulllog-docs/docs/workspace-terminology.mdを参照してください。VS Code や pnpm の機能名に言及する場合は、それぞれの公式用語を優先します。
重要: 今後の契約同期・監査対象は
backend/stable/のみです。backend/beta/は完全に対象外です。
- このリポジトリの役割
- クイックスタート
- ディレクトリ構成
- API 契約監査ワークフロー
- カスタムエージェント一覧
- 日常運用の基本フロー
- CI 連携方針
- 補足: 旧スキーマ駆動フローについて
- 関連ドキュメント
- ライセンス
この contract/ ワークスペースは、以下を担います。
- OpenAPI 正本の維持
api-schema.yamlpaths/*.yamlschemas/*.yaml
- 実装との差分監査
frontend/の API 利用状況backend/stable/の実装ルート・コントローラ
- 安全な仕様反映
- 決定論的チェック
- エージェントレビュー
- human approval
# 依存関係のインストール
npm install
# OpenAPI 構文・参照整合性の検証
npm run validate
# バンドル生成(配布・Swagger Editor 確認用)
npm run bundle
npm run bundle:json
# frontend + backend/stable を横断した drift 検出
npm run drift:all| コマンド | 用途 |
|---|---|
npm run validate |
OpenAPI スキーマの整合性検証 |
npm run validate:verbose |
詳細ログ付き検証 |
npm run bundle |
YAML バンドル生成 |
npm run bundle:json |
JSON バンドル生成 |
npm run drift:frontend |
frontend/ 観測 API と契約の差分検出 |
npm run drift:backend |
backend/stable/ 観測 API と契約の差分検出 |
npm run drift:all |
横断差分検出 |
npm run drift:ci |
CI 用。未反映差分があれば非 0 終了 |
npm run bundle 実行後、Swagger Editor で api-schema.bundle.yaml を開いて確認できます。
contract/
├── api-schema.yaml # OpenAPI エントリーポイント(正本)
├── SCHEMA-INDEX.md # 参照ルールとインデックス
├── paths/ # エンドポイント定義
├── schemas/ # 再利用スキーマ定義
├── scripts/
│ ├── detect-api-drift.mjs # 実装差分の決定論的チェック
│ ├── validate-schema.sh
│ └── validate-schema.bat
├── docs/
│ ├── api-overview.md # 人が読むための API 概要正本
│ └── api-contract-sync-workflow.md # 監査フロー詳細
└── .github/
├── agents/ # API 契約監査用カスタムエージェント
└── instructions/ # contract 編集時の補助指示
スキーマ・エンドポイントの参照ルールは SCHEMA-INDEX.md を確認してください。
現在の標準運用は、「実装をそのまま仕様化する」のではなく、差分を監査して承認済み変更だけを仕様へ反映する 方式です。
contract/api-schema.yamlが正本frontend/とbackend/stable/を継続監査- 差分はまず レポート化
- human approval 後にのみ契約更新
- 更新後は
npm run validateで必ず検証
- 4 つのカスタムエージェント
scripts/detect-api-drift.mjsによる決定論的差分抽出- VS Code task から実行できる drift check
contract編集時に参照される補助 instructions
- missing-in-contract: 実装にあるが契約に未反映
- stale-in-contract: 契約に残っているが実装側に根拠が薄い
- schema-mismatch: path は一致するが request / response の形が怪しい
- human-decision-required: 実装の暫定挙動や意図確認が必要
| エージェント | 役割 | 主な対象 |
|---|---|---|
contract-orch-audit |
監査フロー全体の親オーケストレーション | drift check + auditor 呼び出し + reviewer 統合 |
contract-audit-frontend |
フロントエンドの API 利用を監査 | ../frontend/api/endpoints.ts, ../frontend/server/api/** |
contract-audit-backend |
stable Laravel バックエンド実装を監査 | ../backend/stable/routes/**, ../backend/stable/app/Http/Controllers/** |
contract-review-gap |
2 つの監査結果を統合し change plan を作成 | 契約差分全体 |
contract-impl-spec |
承認済み plan を contract/ に反映 |
api-schema.yaml, paths/**, schemas/** |
- 原則として prompt の
Start Contract Audit Workflowまたはcontract-orch-auditから開始する - 必要時のみ
contract-audit-frontend/contract-audit-backend/contract-review-gap/contract-impl-specを個別に使う
VS Code のターミナル、または Task から以下を実行します。
npm run drift:allまたは VS Code Task:
OpenAPI: Detect drift (frontend)OpenAPI: Detect drift (backend stable)OpenAPI: Detect drift (all)
重要:
npm run drift:allはscripts/detect-api-drift.mjsによる決定論的チェックだけ を実行します。
このコマンド自体はcontract-audit-frontend/contract-audit-backend/contract-review-gapを自動起動しません。
差分レポートを見ながら、VS Code Chat で必要なエージェントを呼びます。
最も簡単なのは、VS Code Chat で prompt Start Contract Audit Workflow を選ぶか、
contract-orch-audit にまとめて依頼する方法です。
おすすめプロンプト例:
contract-orch-audit を使って、PullLog の API 契約監査フローを一括実行してください。
frontend と backend/stable を対象に drift check を行い、必要なら auditor を使ってレビューし、
最後に human approval 用の change plan までまとめてください。beta は無視してください。
おすすめプロンプト例:
contract-review-gap を使って、最新の contract と frontend / backend/stable 実装差分をレビューし、
missing-in-contract / schema-mismatch / human-decision-required に整理してください。
beta 系統は無視してください。
contract-audit-frontend で frontend/api/endpoints.ts と server/api を中心に、
contract/api-schema.yaml との差分を監査してください。
未定義 endpoint と request/response の疑義を evidence 付きで出してください。
contract-audit-backend で backend/stable/routes/api.php と Controllers を確認し、
contract/api-schema.yaml に未反映の endpoint や仕様ズレを evidence 付きで整理してください。
レビュー結果を見て、以下を判断します。
- 正式採用する API 変更か
- 一時実装や未公開挙動ではないか
- schema 化して問題ないか
- 既存 schema を修正すべきか、新規 schema を追加すべきか
更新対象は通常、以下です。
paths/*.yamlschemas/*.yamlapi-schema.yaml
おすすめプロンプト例:
contract-impl-spec を使って、承認済み change plan に従い contract を最小差分で更新してください。
更新後は npm run validate を実行し、結果も報告してください。
npm run validate
npm run bundle必要に応じて npm run drift:all を再実行し、差分が妥当な状態になっていることを確認します。
contract/変更時 →npm run validatefrontend//backend/stable/変更時 →npm run drift:ci
- PR テンプレートに API 影響あり / なし を追加
- drift 結果の JSON を artifact 保存
contract-review-gapの最終 change plan を PR に添付
以前は OpenAPI からコード生成する スキーマ駆動開発 を主軸に検討していましたが、現在の主運用はそれではありません。
現在は以下を優先します。
- contract-first で仕様を保守する
- 実装との差分は 監査フロー で検知する
- 更新は 承認済み change plan に限定する
そのため、コード生成は必要時の参考手段に留め、README では主運用としては扱いません。
SCHEMA-INDEX.md— スキーマ参照ルールと一覧docs/api-contract-sync-workflow.md— 監査フロー詳細../frontend/api/endpoints.ts— フロントエンド側の API 定義入口../backend/stable/routes/api.php— stable バックエンドの主要 API ルート
MAGIC METHODS に帰属します。
Pull Request / Issue 歓迎です。
API 仕様変更を伴う場合は、できるだけ以下を含めてください。
- 変更の背景
- 影響 endpoint
- contract 変更有無
npm run validateまたはnpm run drift:allの結果