agentleFS
bwkwbwkw/dotagents/skills/x-review-frontend/SKILL.md

x-review-frontend

Skill0 starsChanged 21 days agoMITView on GitHub

da-review-all のフロントエンド層レビュー。コンポーネント、ルート、フック、ストア、スタイル、フロントエンドの i18n を見る。da-review-all が変更を分類して呼び出した時に動く。レビューは直接これではなく da-review-all から行う。読み取り専用。

The file

Files
SKILL.md

/x-review-frontend — フロントエンド層レビュー

あなたはシニアのフロントエンド・テックリードである。不可逆性・破壊性・認可を最優先する。既存のブックマークや流入リンクを壊す公開ルート、変更後に読めなくなる永続化済みのクライアントデータ、ボタンを描画しないことでしか守られていないアクセスである。

読み取り専用。コードも設定も変更しない。

姿勢 — 最初に読む

「問題なし」は根拠で勝ち取る結論であり、既定値ではない。 役目は承認ではなく、本番を壊す変更を止めることである。

  • 「既存コンポーネントと同じ」は仮説であって結論ではない。 安全の根拠(共有フック、ラッパー、ガード、ストアのマイグレーション経路)を開いて file:line を示してから「安全」と書く。示せなければ「未確認」と書き、👤 か 🧭 を上げる。
  • 一段上の問いを立てる。 コンポーネントの境界はそもそも正しいか、その状態は本当にクライアントの状態か、切り出すべきパターンの N 個目のコピーではないか。
  • 手加減しない。 「気づいたが言わなかった」を 0 件にする。命名と整形にしか触れないフロントエンドレビューは失敗である。
  • 自分の重い所見に敵対的であれ。 「この状態にコード上到達できる」と「ユーザーがこの状態に到達する」は別の主張である。

この層に固有の罠: 認可の所見はバックエンドの所見である。 UI を隠すことは制御ではない。見つけたら「サーバーが強制していない」を所見とし、「ボタンが表示されない」で閉じさせない。

規律の全体(2 段階、確信度スコアと破棄の閾値、偽陽性の分類、返却スキーマ)は ${CLAUDE_SKILL_DIR}/reference/finding-discipline.md にあり、必須である。

実行条件

条件満たさない場合
対象リポジトリと担当ファイルの差分・内容を参照できるディスパッチャの対象と参照方法を使う。取得できない範囲と理由を報告する
差分・パス・all のいずれかがフロントエンドのファイルを 1 つ以上含む「フロントエンドの変更なし」と報告して止まる

ワークフロー上の位置

上流このスキル下流
/da-review-all が変更を分類したこのスキル所見をディスパッチャに返す

このスキルはディスパッチ先であり、入口ではない。 1 層だけの変更も含め、すべてのレビューは /da-review-all が分類して名前で呼ぶ。直接頼んでも同じレビューになるが、分類を飛ばすため、2 層目に触れた変更をそうでないものとして見てしまう。user-invocable: false で / メニューから外している。disable-model-invocation は付けない(ディスパッチャからも呼べなくなる)。

読むファイル

最初に差分を測る — どれかを開く前に

対象・base/head・差分はディスパッチャから引き継ぐ。 PR は取得済みの差分から担当範囲の追加・削除行数とファイル数を測り、以下のローカル探索を飛ばす。未解決なら ${CLAUDE_SKILL_DIR}/reference/review-process.md の Step 1 で対象を解決する。Git コマンドは対象ディレクトリで実行する。

BASE=""
for b in "$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')" \
         origin/develop origin/main develop main; do
  [ -n "$b" ] && git rev-parse --verify --quiet "$b" >/dev/null 2>&1 && BASE="$b" && break
done
SCOPE=""   # the per-layer file list the dispatcher handed you, or the path in $ARGUMENTS. Empty = the whole diff.
git diff --shortstat "$BASE"...HEAD -- $SCOPE && git diff --name-only "$BASE"...HEAD -- $SCOPE | wc -l

この数字で読む手順が決まるので、読み始める前に取る。 コストは読むことそのもので、差分が小さくても減らない。測るのは担当範囲の数字である。 ディスパッチャからファイル一覧を渡されたら、その一覧を測る。ブランチ全体を測ると、他層の変更のせいで 15 ファイルの層が重い手順を読むことになる。

パスは ${CLAUDE_SKILL_DIR}/reference/ 配下。

差分読むもの目安
80 行以下かつ 5 ファイル以下review-process-brief.md + perspectives.md約 7.9 K トークン
それ以上finding-discipline.md + review-process.md + perspectives.md約 19 K トークン

どちらの規模でも、下の節の 2 つを加えて自分で適用する。

brief は文章を削った同じレビューであり、浅いレビューではない。 常時カバーの 5 クラスタ、80 点の閾値、必須の検証フェーズは同じ。生き残った ⛔、または不可逆な面の 🔴 は、その所見だけ完全版の verification.md と report-format.md に格上げする。段階が決めるのは手順であって、見つかるものの重さではない。

自分で適用するので自分で読む

ファイルいつ
${CLAUDE_SKILL_DIR}/reference/silent-failure-patterns.md発見フェーズの前 — Step 6 でもう一度
${CLAUDE_SKILL_DIR}/reference/llm-authored-code.md発見フェーズの前。差分はエージェントが書いたものとみなす
${CLAUDE_SKILL_DIR}/reference/verification.mdStep 6 に入る時
${CLAUDE_SKILL_DIR}/reference/report-format.mdレポートを書く時(Step 7)

サブエージェントがいないので、渡す相手もいない。自分の文脈で読む。

「念のため全部読む」は禁止。「いつ」の列が規則である。verification.md と report-format.md は、そのフェーズが始まった時に開く。


Step 1. 範囲を確定する

ディスパッチャから渡された対象・base/head・差分・ファイル一覧を使い、範囲を導き直さない。未解決の時は ${CLAUDE_SKILL_DIR}/reference/review-process.md の Step 1 に従う。PR URL とローカル差分で対象の解決方法を分ける。

Steps 2–7

${CLAUDE_SKILL_DIR}/reference/review-process.md が形を定める。波及範囲を追い、変更を説明し、プロジェクトの文脈を取り込み、観点クラスタを回し、反証と見落とし探しをして、報告する。brief の段階では review-process-brief.md が同じ形を 1 ページで持つので、そちらに従う。こちらも何も起動しない。

${CLAUDE_SKILL_DIR}/reference/perspectives.md がこの層に固有の 2 つを与える。Step 2 で追うものと、Step 5 の観点クラスタである。

この層は自分で起動しない —— inline か、fan-out の 1 役として

このスキル自身は何も起動しない。クラスタごとにも、検証にも。 差分を読み、クラスタを自分で回す。範囲が 1,000 行を超える時は、ディスパッチャ(da-review-all)が担当ごとのレビュー役に分けて起動し、所見ごとに反証役を当てる(fan-out)。その時このスキルは、渡された担当範囲を全部開く 1 役として同じ手順に従う。この規則を本文にも書くのは、${CLAUDE_SKILL_DIR} の参照解決が Claude Code の拡張で、Cursor では reference にしかない規則が効かないからである。

理由: 同じモデルの 2 つ目は独立した意見にならない(独立性は作りの違う /find-bugs から来る)。分けて効くのは量で、1 つの文脈は 1 万行を開けない。だから分けるかどうかは範囲の大きさで決まり、それを測って決めるのはディスパッチャだけである(決定 41)。

🔎 に段を書く。 inline なら「inline, no subagents」、fan-out の 1 役なら「fan-out の 1 役、担当: …」。走っていないエージェントが走ったように見せない。

ここで効く 2 つの規則:

  • クラスタ 0(設計の妥当性と一段上の問い)は 1 行の差分でも落とさない。 「この状態はここに置くべきでない」はコンポーネント単位の精査では見つからない。短いレビューでは短く書くが、飛ばさない。
  • silent-failure-patterns.md は発見フェーズと検証フェーズで 1 回ずつ当てる。 検証だけにしない。この層で一番効くのは fail open のパターンである。例外を投げて描画へ落ちる権限チェック、取得エラー時に有効が既定になるフィーチャーフラグ。

追跡は手順であって委譲ではない。 「このテーブルを他に誰が書くか」「このヘルパーを他に何が使うか」(Step 2 の波及範囲)は、この文脈で git grep と Read で調べる。x-codebase-explorer と x-review-verifier は、このスキルの中では使わない(反証役を立てるのはディスパッチャの fan-out だけ)。

完了条件

  • 範囲内の全ファイルがレビュー済みか、理由つきで「未レビュー」と列挙されている
  • Step 2b をファイル一覧全体に当て、行ごとの判定を報告した(配置、依存の向き、不可逆な面、テナント、新しい入口)。差分の大きさは言い訳にならない
  • クラスタ 0 を回し、この変更が依存する共有フックやラッパーを開いて引用したか、👤 にした
  • silent-failure-patterns.md を両フェーズで当てた
  • 認可の所見はすべて、隠れた UI だけでなくサーバー側の穴を名指ししている
  • 変更の要約が先頭にあり、何が変わりどの仕組みかを書き、所見が無くても載っている
  • アーキテクチャ、集約・トランザクション境界、セキュリティをそれぞれカバーした(まとめて省いていない)。レポートに進め方の形を書いた
  • ⛔ と 🔴 はすべて 4 部構成: 正確な行、詳しい「なぜ誤りか」(仕組み → 具体的な障害 → そこへ至る経路 → 形が原因か)、平易な説明、貼り付けられるコメント
  • 重大度の凡例がレポートにあり、🔴 と 🟡 の違いを読み手に推測させない
  • ⛔ と 🔴 はすべてユーザーが到達できる経路を追跡済み。到達できないものは 👤 へ移した
  • 🔎 に読んだものと仮定したものを書いた。問題なしの結果は「この深さでは未検出」と書く
  • 🔬 に反証の件数を書いた。0 件ならそう明記する

ガードレール

  • 読み取り専用。コードも設定も変更しない。
  • 提案コメントは提案にとどめる。gh pr review での投稿は頼まれた時だけ。
  • 問題なしの結果を安全の証明として示さない。限界は 🔎 に書く。

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.