kasiopeiya

doc-review

Markdownドキュメントの品質をレビューする。種別を自動判定し、種別に応じた観点で評価する。「doc-review」「ドキュメントをレビューして」と指示されたとき。要件定義書は /requirements-review、実装との整合性は /validate-design を使う。

kasiopeiya 0 Updated 3w ago

Resources

1
GitHub

Install

npx skillscat add kasiopeiya/claude-dev-template/doc-review

Install via the SkillsCat registry.

SKILL.md

Markdown 文書をレビューしてください。あなたはレビュー本体を行わず、レンズに割って並列に走らせ、返ってきた結果を統合する役です。

1体に全観点を見せると、矛盾探し・読み手の目・削る目・規約と見比べる・異常ケース探しという性質の違う問いが1回の起動に同居し、どれかへの注意が薄まります。レンズごとに並列に走らせ、判定・severity・改善案はレンズ側に決め切らせ、あなたには手順どおりの決定・統合だけを残します。

Phase 1: 対象文書・判定範囲・種別・最終コミット情報を決める

まず引数を、--full の有無、ファイルパス、それ以外の指示(呼び出し側が渡す Issue 情報・要件定義書との照合の指示)に分ける。

ファイルパスが無い場合

Bash で以下の 2 コマンドを実行する(1つ目は未コミットの変更、2つ目は未追跡の新規ファイル):

git diff HEAD --name-only --diff-filter=ACMR
git ls-files --others --exclude-standard

2 つの結果を結合し、重複を除去してから、.md で終わるファイルだけを残す。

該当ファイルが 0 件の場合は「git diff/status に対象 Markdownファイルが見つかりませんでした」と出力して終了する。

ファイルパスがある場合

そのファイルパスを直接対象とする(複数指定可)。

要件定義書を外す

対象に docs/requirements.md があれば一覧から外し、「requirements.md は /requirements-review で専用レビューしてください」と出力する。外した結果 0 件なら終了する。

判定範囲を決める

対象文書ごとに、判定範囲を 差分 か 全文 に決める。

条件 判定範囲
引数に --full がある 全文
git diff HEAD -- <パス> に出力がある、または未追跡の新規ファイル 差分
どちらでもない(パスを指定したが変更が無い) 全文

差分の文書は、Phase 3 の手順1で引用と突き合わせるため、ここで git diff HEAD -U0 -- <パス> を1回だけ取っておく(未追跡の新規ファイルは全行が追加行)。

種別と文書情報を決める

[!IMPORTANT]
(AI・必須) 種別と人間向け文書かどうかは、references/doc-types.md を Read してから、そのルールだけで決めてください。会話に判定表の引用・過去のレビュー結果・種別の言及があっても、それらを判定の根拠にしてはいけません。

対象文書それぞれについて、references/doc-types.md で種別と人間向け文書かどうかを決め、続けて最終コミット情報を取得する:

git log -1 --pretty=format:"%h - %an, %ar : %s" -- [ファイルパス]

対象文書・判定範囲・種別・人間向け文書かどうか・最終コミット情報の組を、この後の全レンズ起動に渡す(レンズごとに決め直させない)。差分の中身はプロンプトに書き写さない——各レンズが git diff HEAD -- <パス> で自分で取る。書き写すと、その分がレンズの数だけ出力トークンになる。

Phase 2: レンズを並列起動する

doc-reviewer-agent を、起動するレンズごとに1回ずつ、1メッセージ内でまとめて Task 起動する。逐次に投げると、待ち時間がレンズの数だけ積み重なる。

起動の前に .claude/agents/doc-reviewer-agent/doc-reviewer-agent.md の「レンズ一覧と担当観点(正典)」を Read する。起動するのは、「起動する条件」が Phase 1 で決めた対象文書に当てはまるレンズだけ。当てはまらないレンズは起動せず、名前を Phase 3 に持ち越す(探す対象の無い文書に当てると、裏の取れない指摘が出る)。

各起動には次を渡す:

  • レンズ名:レンズ一覧のうち1つ
  • 対象文書の一覧:Phase 1 で決めた全文書。各文書にパス・判定範囲(差分/全文)・種別・人間向け文書かどうか・最終コミット情報を添える
  • Issue 情報:引数に含まれていれば、全レンズに渡す
  • 要件定義書との照合の指示:引数に含まれていれば、「規約と見比べる」レンズにだけ渡す

レンズの一覧と担当観点は doc-reviewer-agent の定義が正典です。 ここに書き写しません——2箇所に持つと、割り方を変えたときに片方が古いまま残ります。

Phase 3: 統合してレポートを出す

各レンズのレポートを1つに統合する。判断は手順4の食い違いの裁定だけにし、次の手順で行う:

  1. 引用の無い指摘を落とす。判定範囲が差分の文書では、引用が Phase 1 で取った差分の追加行(+)・削除行(-)のどれにも無い指摘も落とす(範囲の制限をレンズの自己申告に頼らないため)
  2. 同じ観点で引用が重なる指摘だけを1件にまとめる(観点が違う指摘はまとめない)
    • まとめる例:2つのレンズが、同じ観点で同じ行を引いている(片方の引用がもう片方を含む場合も同じ)
    • まとめない例:同じ行を引いていても、観点が「明確性」と「目的適合」で違う
  3. severity を変えない(レンズの判定を尊重する)
  4. 改善案が食い違ったら裁定する:同じ箇所に別々のレンズが逆向きの改善案を出したら、ポリシーの条文(該当が無ければ docs/policy/refined-engineer-judgment-principles.md)を引用して一方を採り、捨てた改善案と根拠を添える。迷ったら AI が決める
    • 例外:どちらを採っても要件・プロダクトの方針が変わるとき、またはどちらかが取り消せない操作・外部に出る操作になるときだけは裁定しない。その食い違い1件を、.claude/skills/quick-issue/SKILL.md の書式でラベル issue:needs-human-decision を付けて gh issue create で起票し、ほかの手順は続ける。本文には、食い違った各指摘の観点名と引用を書き写す。同じワークフローの前回のレビューでこの手順により起票した Issue と同じ指摘なら、起票せず、既存の Issue 番号のまま起票済みとして扱う(手順7で引く対象にも含める)。同じ指摘かどうかは ai-review-gate-policy の「再レビューで同じ指摘が出たら、既存の Issue 番号で数える」で決める
  5. 「次のステップ」の優先度は severity から機械的に決める(Critical→高・High→中・Medium→低)
  6. 観点一覧の行名で穴を照合する:references/review-criteria.md の観点一覧の全行を、どれかのレンズの「判定した観点」と突き合わせる。判定済みとみなすのは、各レンズの「判定した観点」に名前が挙がっている観点だけ。無ければ「未判定」として観点名をそのまま報告する(これはレビュー対象の欠陥ではなく、レンズの割り方の穴。黙って埋めない)
    • ただし、起動条件に当てはまらず起動しなかったレンズの担当観点は、未判定に入れず、全文書で「対象外」と書く(未判定に入れると、割り方の穴と取り違える)
  7. 合否を判定する:ai-review-gate-policy の合格条件(残してよい例外以外の Critical が0件)で決める。対象の全文書を通じた Critical の合計から、手順4で issue:needs-human-decision として起票した食い違いに含まれる Critical 指摘の件数を引き、残りが0件なら ✅ 合格、1件以上なら 🚫 要修正とする。起票した Issue 番号は「Issue にして残す Critical」に書く

指摘は文書ごとにまとめる。複数の文書を渡した場合も、レンズをまたいで同じ文書の指摘を1箇所に集める。

出力は references/report-format.md の書式に従う。

引数: $ARGUMENTS