ワンクリックで
doc-quality-gate
ドキュメント品質ゲート — Critical/High が 0 件になるまでレビュー→修正を自動反復。Use when: 仕様書品質の自動向上、設計書の品質ゲート通過、ドキュメント品質の完全自動化
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
ドキュメント品質ゲート — Critical/High が 0 件になるまでレビュー→修正を自動反復。Use when: 仕様書品質の自動向上、設計書の品質ゲート通過、ドキュメント品質の完全自動化
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
実装計画プランに基づくマイクロサービスの段階的自動実装を実行。各フェーズ実装後に完了チェックリストで網羅的に検証し、全項目合格の場合のみ次フェーズに自動進行する。Use when: マイクロサービスの自動実装、フェーズ実装と検証の自動化、段階的な安全な実装実行
フロントエンド実装フェーズの完了検証を実行。各フェーズの修了条件チェックリストに基づき、間違い・抜け漏れ・手抜きがないかを網羅的に検証する。Use when: 各フェーズが終了後、実装品質チェック、抜け漏れ検証、フロントエンド実装の検収
SOC 職業分類に基づく
| name | doc-quality-gate |
| description | ドキュメント品質ゲート — Critical/High が 0 件になるまでレビュー→修正を自動反復。Use when: 仕様書品質の自動向上、設計書の品質ゲート通過、ドキュメント品質の完全自動化 |
| argument-hint | 対象ドキュメント名(例: spec, api-gateway-design, full) |
指定ドキュメントに対して orchest-doc-review Agent によるレビュー → 自動修正 → 再レビュー のサイクルを、 Critical = 0 かつ High = 0 の品質基準を満たすまで自動反復する。
人間の介入なしに設計書・仕様書の品質を自動的に引き上げる「品質ゲート」として機能する。
| 指標 | 合格条件 |
|---|---|
| Critical 指摘数 | 0 件(1 件でもあれば不合格) |
| High 指摘数 | 0 件(1 件でもあれば不合格) |
| Medium / Low | 件数は記録するが、合格判定には影響しない |
| 制限 | 値 | 理由 |
|---|---|---|
| 最大イテレーション回数 | 5 回 | 無限ループ防止 |
| イテレーション間の確認 | 3 回目以降は修正前にユーザー確認を推奨 | 品質収束しない場合の早期検知 |
| 同一指摘の再発上限 | 同一 ID の指摘が 3 回連続で再発 → エスカレーション | 自動修正不可能な根本課題の検出 |
design-docs/ ディレクトリに存在することorchest-doc-review Agent(.github/agents/orchest-doc-review.agent.md)が利用可能であること.github/review-reports/doc-review/ ディレクトリが存在すること.github/instructions/*.instructions.md)にアクセス可能であること対象ドキュメントの確定
spec, api-gateway-design, full)design-docs/<対象名>.md の存在を確認するfull 指定の場合は design-docs/ 配下の全 .md ファイルを対象とするspec, authentication-service-design)または full で複数ファイルを受け付けるイテレーションカウンターの初期化
iteration = 0max_iterations = 5既存レポートの確認
.github/review-reports/doc-review/<対象名>-check-report-*.md を検索目的: 14 Agent によるレビュー実行前に、過去の品質ゲートで繰り返し検出された機械的に検証可能な整合性問題を事前排除する。これにより「修正→新規問題→再修正」のモグラ叩きループを防止する。
3.5. 整合性チェックの実行
チェック項目一覧:
| # | チェック名 | 検証内容 | 判定基準 |
|---|---|---|---|
| 1 | snake_case 命名スキャン | SQL DDL 内のカラム名・テーブル名が全て snake_case であること | camelCase / PascalCase のカラム名を grep で検出 |
| 2 | CHECK 制約網羅性 | ステータス系カラム(status, type, role, state 等)に CHECK 制約が定義されていること | テーブル定義内のステータス系カラムと CHECK 制約を突合 |
| 3 | CHECK 制約値の UPPER_CASE | CHECK 制約内の列挙値が全て UPPER_CASE であること | CHECK.*'[a-z] パターンで小文字値を検出 |
| 4 | 監査カラム存在 | 全テーブルに created_at / updated_at カラムが存在すること | テーブル定義を走査 |
| 5 | FK カラムのインデックス | *_id カラム(FK 候補)に対応するインデックスが定義されていること | FK カラムとインデックス定義を突合 |
| 6 | AppHost / Mermaid 三点照合 | サービス一覧表、AppHost コード、Mermaid 図のサービス数と接続が一致すること | 各セクションからサービス名を抽出し集合比較 |
| 7 | Outbox ステータス値統一 | Outbox 関連のステータス値が全箇所で同一表記であること | outbox を含むセクションのステータス値を収集し重複排除 |
| 8 | コード例基本規約 | コード例が primary constructor、CancellationToken ct = default、ILogger<T> メッセージテンプレートを使用していること | コードブロック内を走査 |
自動修正のルール:
references/addition-checklist.md を参照し、修正の付随要素が漏れないことを確認するfix-report に記録するイテレーションカウンターのインクリメント
iteration += 1iteration > max_iterations の場合 → Phase 6(タイムアウト終了)へ現在日時の取得
date '+%Y-%m-%d %H:%M' コマンドで実際の現在日時を取得する(ハードコードしない)orchest-doc-review Agent の呼び出し
単一ファイルの場合(従来どおり):
orchest-doc-review Agent を実行する.github/review-reports/doc-review/<対象名>-check-report-<N>.md に保存される<N> は通算レビュー回数(既存レポートの最大番号 + 1)複数ファイルの場合(並列実行):
agent ツールの並列呼出し機能を使用して、未合格の各ファイルに対して orchest-doc-review Agent を同時に起動する.github/review-reports/doc-review/<ファイル名>-check-report-<N>.md に保存される# 並列呼出し例(full モードで 3 ファイルが未合格の場合):
agent orchest-doc-review: "spec.md をレビューして" ─┐
agent orchest-doc-review: "authentication-service-design.md を..." ├─ 同時並列
agent orchest-doc-review: "inventory-management-design.md を..." ─┘
# → 各 Agent 内部でさらに 14 サブエージェントが並列実行される
合格済みファイルのスキップ: 複数ファイルの品質ゲートループでは、前回イテレーションで合格(Critical == 0 AND High == 0)したファイルは再レビューをスキップする。未合格ファイルのみ再レビューを実行する。
レポート解析
品質基準の評価
Critical == 0 AND High == 0 → 合格 → Phase 5(成功終了)へ。それ以外 → 不合格 → Phase 4(自動修正)へ進捗の確認(イテレーション 3 回目以降)
⚠️ イテレーション {N} でも Critical/High が減少していません。
残存: Critical={X}, High={Y}
対象ファイル: {ファイル名}(複数ファイル時)
続行しますか? [続行 / 中断してレポート出力]
⚠️ 以下の指摘が 3 回連続で解消されていません(自動修正困難と判断):
- {指摘ID}: {指摘内容}(対象: {ファイル名})
人間によるレビューを推奨します。
重要: このフェーズでは対象ドキュメント(
design-docs/<対象名>.md)をeditツールで直接編集 する。 レポートを参照するだけでなく、実際にファイルの内容を書き換える ことで品質を向上させる。
修正パターンガイド に基づき、以下の優先順で修正する:
修正の品質を担保するため、修正作業の前に以下の規約ファイルを読み込み、修正内容が規約に準拠していることを保証する:
AGENTS.md — プロジェクト全体の規約(最上位).github/instructions/dotnet-coding-standards.instructions.md — コーディング規約.github/instructions/security-coding.instructions.md — セキュリティ規約.github/instructions/api-design.instructions.md — API 設計規約各 Critical/High 指摘に対して、以下の 5 ステップ を実行する:
レビューレポートから以下を抽出する:
以下のツールを使って修正すべき箇所を正確に特定する:
# 1. grep で指摘に関連するキーワードを検索し、行番号を特定する
grep -n "キーワード" design-docs/<対象名>.md
# 2. view ツールで該当箇所の前後コンテキスト(±20行程度)を確認する
view design-docs/<対象名>.md [開始行, 終了行]
# 3. 修正対象の正確なテキスト範囲を確定する
重要: 修正前に必ず view で該当箇所を確認し、old_str に使う正確なテキストを把握すること。
目的: 修正が他セクションに波及する影響を修正実行前に特定し、同時修正計画を立てる。これにより「修正→新規問題→再修正」のモグラ叩きループを防止する。
以下の手順で影響範囲を網羅的に特定し、全関連箇所を同時に修正する:
Step A — キーワード抽出: 修正対象から以下のキーワードを抽出する
Order, orders)SalesManagementService)order.created)PENDING, COMPLETED)Saga, Outbox)Step B — grep 一括検索: 抽出したキーワードで全出現箇所を検索する
# 1. 修正対象のキーワードで全出現箇所を検索
grep -n "キーワード1\|キーワード2\|キーワード3" design-docs/<対象名>.md
# 2. 結果をセクション単位で整理し、修正が必要な関連箇所を列挙する
Step C — 影響マトリクスで関連セクションを特定: 修正内容の種別に応じて、以下のマトリクスで関連セクションを自動判定する
| 修正内容の種別 | 必ず確認すべき関連セクション |
|---|---|
| テーブル / エンティティ変更 | ① エンティティ定義テーブル ② CHECK制約セクション ③ インデックス設計 ④ 監査カラム ⑤ C#エンティティクラス例 ⑥ AppDbContext定義 |
| Kafka トピック変更 | ① トピック一覧テーブル ② 発行/購読サービスの記載 ③ AppHost コード ④ Mermaid 構成図(ローカル・Azure 両方) |
| サービス間通信変更 | ① Saga ステップ定義 ② AppHost WithReference ③ Mermaid 構成図 ④ gRPC proto 定義 ⑤ タイムアウト/Deadline |
| ステータス値の追加/変更 | ① 状態遷移図 ② CHECK 制約定義 ③ 全文中の同一ステータス値(表記統一) |
| GDPR / PII 変更 | ① RoPA テーブル ② データ保持ポリシー ③ DSR フロー ④ 暗号化対象一覧 ⑤ DPIA セクション |
| コード例の変更 | ① 同一クラスの他コード例 ② primary constructor パラメータ整合性 ③ 関連 DI 登録例 |
| Mermaid 図の変更 | ① 対応する Mermaid 図(ローカル↔Azure の同期) ② サービス一覧テーブル ③ AppHost コード |
Step D — 同時修正計画の策定: 影響範囲スキャンの結果に基づき、修正計画を以下の形式で整理してから edit を実行する
📋 修正計画(指摘 {ID}):
- 主修正: {セクション名}(L{行番号})— {修正内容}
- 関連修正 1: {セクション名}(L{行番号})— {連動修正内容}
- 関連修正 2: {セクション名}(L{行番号})— {連動修正内容}
- 確認済み影響なし: {セクション名} — {影響がない理由}
ルール:
edit ツールでドキュメントを直接編集する修正パターン A — 既存テキストの修正:
edit ツールを使用:
path: design-docs/<対象名>.md
old_str: <修正前のテキスト(view で確認した正確な内容)>
new_str: <修正後のテキスト(指摘の推奨対応に基づく改善内容)>
修正パターン B — 新規セクションの追加:
edit ツールを使用:
path: design-docs/<対象名>.md
old_str: <挿入位置の直前にある既存テキスト>
new_str: <既存テキスト>
<追加する新規セクションの全文>
修正パターン C — テーブルへの行追加:
edit ツールを使用:
path: design-docs/<対象名>.md
old_str: | 既存の最終行 | ... |
new_str: | 既存の最終行 | ... |
| 追加行 | ... |
修正の原則:
old_str はドキュメント内で 一意に特定できる 十分な長さにするedit を複数回呼び出す各修正の適用後、以下を確認する:
# 1. 修正箇所を view で確認し、意図した変更が正しく反映されているか検証する
view design-docs/<対象名>.md [修正行の前後]
# 2. 修正が他のセクションと矛盾していないか、関連キーワードで grep する
grep -n "関連キーワード" design-docs/<対象名>.md
# 3. Mermaid 図の場合、開始/終了タグが正しく対応しているか確認する
grep -n "```mermaid\|```$" design-docs/<対象名>.md
検証で問題が見つかった場合: 即座に edit で修正する(不整合を残したまま次の指摘に進まない)
修正した内容を内部リストに追加する(修正ログ作成用):
全 Critical/High 指摘の修正が完了したら、ドキュメント全体の整合性を確認する:
問題が見つかった場合は edit で修正する。
.github/review-reports/doc-review/<対象名>-fix-report-<N>.md に修正内容を記録する。
<N> は対応するチェックレポートと同じ番号。
修正ログは create ツールで新規ファイルとして作成する:
# ドキュメント修正ログ
- **対象**: design-docs/<対象名>.md
- **イテレーション**: <N> / <max_iterations>
- **修正日時**: (date コマンドで取得した実際の現在日時)
- **対応レビュー**: <対象名>-check-report-<N>.md
## 修正サマリー
| 修正件数 | Critical | High | 合計 |
|---------|----------|------|------|
| 修正済み | X | Y | Z |
| 修正不可(エスカレーション) | A | B | C |
## 修正詳細
| # | 指摘ID | 重要度 | 出典Agent | 修正パターン | 修正箇所(セクション) | 修正内容の概要 |
|---|--------|--------|----------|-------------|---------------------|-------------|
| 1 | C1 | Critical | architect | B: 新規追加 | §X.Y に新規セクション追加 | ... |
| 2 | H3 | High | performance | A: 既存修正 | §X.Y のテーブルを更新 | ... |
## 修正不可事項(人間対応が必要)
| # | 指摘ID | 重要度 | 理由 | 推奨対応者 |
|---|--------|--------|------|-----------|
修正ログの保存が完了したら、Phase 2(レビュー実行)に戻り、修正後のドキュメントを再レビューする。
品質ゲート通過レポートの生成
.github/review-reports/doc-review/<対象名>-quality-gate-passed.md に最終レポートを保存するdate コマンドで取得した実際の現在日時)完了メッセージの出力
✅ ドキュメント品質ゲート通過
対象: <対象ドキュメント>
イテレーション: <N> 回で合格
修正件数: Critical <X>件 + High <Y>件 = 合計 <Z>件
タイムアウトレポートの生成
.github/review-reports/doc-review/<対象名>-quality-gate-timeout.md に最終レポートを保存するエスカレーションメッセージの出力
❌ ドキュメント品質ゲート未通過(最大 <max_iterations> 回に到達)
残存: Critical=<X>, High=<Y>
以下の指摘は自動修正困難です。人間によるレビューを推奨します:
- <指摘一覧>
# ドキュメント品質ゲート結果
## 判定
- **対象**: <対象ドキュメント>
- **判定**: ✅ PASSED / ❌ NOT PASSED(タイムアウト)
- **実施日時**: (date コマンドで取得した実際の現在日時)
- **総イテレーション回数**: <N> / <max_iterations>
## イテレーション推移
| イテレーション | Critical | High | Medium | Low | 判定 |
|--------------|----------|------|--------|-----|------|
| 1 | X | Y | ... | ... | ❌ |
| 2 | X' | Y' | ... | ... | ❌ |
| ... | ... | ... | ... | ... | ... |
| N | 0 | 0 | ... | ... | ✅ |
## 修正履歴
### イテレーション 1
- レビューレポート: <対象名>-check-report-<N>.md
- 修正ログ: <対象名>-fix-report-<N>.md
- 修正件数: Critical <X> + High <Y>
- 主な修正内容:
- ...
### イテレーション 2
...
## 残存指摘(Medium / Low)
| # | 重要度 | カテゴリ | 指摘内容 |
|---|--------|---------|---------|
チェックレポート: .github/review-reports/doc-review/<対象名>-check-report-<N>.md
<N> はインクリメンタル番号(既存の最大番号 + 1)修正ログ: .github/review-reports/doc-review/<対象名>-fix-report-<N>.md
<N> を使用する品質ゲート結果: .github/review-reports/doc-review/<対象名>-quality-gate-passed.md または <対象名>-quality-gate-timeout.md
削除禁止: 過去のレポートは修正・削除しない(監査証跡)
日時の記録: 全レポート内の日時は date '+%Y-%m-%d %H:%M' コマンドで実際の現在日時を取得して記入する
.github/agents/orchest-doc-review.agent.md) — レビュー実行エンジン