adversarial-tanstack について
adversarial-tanstackは、TanStack StartとTypeScriptの変更を審査するマージゲート用スキルです。単一のブラインドレビュアーが厳格に合否を判定し、コード修正や助言的なフィードバックは行いません。
主な機能
- 01単一サブエージェントによるブラインドレビュー
- 02失敗時に通さない合否判定
- 03セキュリティと境界のルール
- 04現行TanStack Start APIの検査
- 05失敗項目ごとの具体的な修正案
活用シーン
- 01マージ前のTanStack Start変更の審査
- 02エージェント作成コードの独立レビュー
- 03クライアント/サーバー境界のセキュリティ監査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill adversarial-tanstackインストール後、Claude Code で/adversarial-tanstackを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
gotchas.mdmetadata.jsonassets/templates/verdict.mdreferences/_sections.mdboundary-client-env-prefix.mdboundary-env-server-context.mdboundary-loader-no-secrets.mdreviewer-prompt.mdsec-auth-at-handler.mdsec-csrf-with-custom-start.mdsec-no-account-enumeration.mdsec-private-cache-control.mdsec-session-cookie-flags.mdserverfn-current-api.mdserverfn-post-mutations.mdserverfn-static-imports.mdserverfn-validate-input.mdssr-deterministic-render.mdssr-per-request-instances.mdssr-suspense-for-loader-data.mdtscfg-erasable-syntax.mdtscfg-no-verbatim-module-syntax.mdtscfg-strict-baseline.mdtypes-exhaustive-switch.mdtypes-justified-nonnull.mdtypes-no-escape-hatches.mdtypes-parse-external-data.md詳細
Adversarial TanStack Gate
TanStack Start + TypeScript のウェブアプリの変更に対するマージゲートです。合否を判定するゲートであり、単一のブラインドレビュアーサブエージェントが、このゲートのルールに対して敵対的な姿勢で作業を評価します。すべてのルールが PASS または N/A の場合にのみ、作業は合格となります。このスキルは判定を出すだけで、作業を修正することはありません。
ルールは @tanstack/react-start 1.168 以降(v1 RC、2026 年 7 月)と TypeScript 5.8~6.x の仕様に基づいています。
適用するタイミング
- TanStack Start の機能、ルート、またはサーバー関数をマージする前に、助言的なフィードバックではなく、客観的な PASS/FAIL が必要な場合。
- エージェント(Claude、Codex)が Start アプリのコードを作成し、作成者の偏りによる安易な承認を避けるために独立したチェックを行いたい場合。
- 差分がクライアント/サーバー境界(環境変数、ローダー、サーバー関数、認証など)に触れており、誤った PASS によって秘密情報の漏洩や不正なデータアクセスが発生する可能性がある場合。
- 既存の Start コードベースのファイル群を、現在の v1 RC API サーフェス(古くなった
.inputValidator()、削除されたcreateServerFileRoute)に照らして監査する場合。
Start 以外の React アプリには適用しないでください(ほとんどの serverfn/boundary/ssr ルールが N/A となり、ゲートが TypeScript チェックだけになってしまいます)。また、ユーザーが判定ではなく説明やリファクタリングを求めている場合にも適用しないでください。
レビュープロトコル
以下の手順に厳密に従ってください。すべてのレビューが同じ方法で実施されることに、このゲートの価値があります。
- 対象を特定する。 レビュー対象(差分、ファイル群、PR)を正確に特定し、レビューが曖昧さのない固定された対象に対して行われるよう、ref/パスを記録します。差分で触れていなくても、複数のルールがこれらのファイルによって決まるため、対象パスには必ず
tsconfig.json、src/router.tsx、および存在する場合はsrc/start.tsを含めます。 - ルールを読み込む。 references/_sections.md と、
references/内のすべてのルールファイル(すべてのboundary-*.md、serverfn-*.md、sec-*.md、ssr-*.md、types-*.md、tscfg-*.mdファイル)を読みます。 - レビュアー用プロンプトを作成する。 ルールと対象を references/reviewer-prompt.md に記入します。作成したプロンプトは完全に自己完結していなければなりません。レビュアーには会話履歴が表示されないため、プロンプト外のコンテキストを参照してはなりません。
- ブラインドレビュアーを 1 人起動する。 作成したプロンプトだけを入力全体とする Task サブエージェントを 1 つ起動します。会話のコンテキストを渡したり、プロンプトに解説を添えたりしてはいけません。
- 失敗時に閉じる形で判定する。 レビュアーの構造化出力を判定とします。マージステップはありません。すべてのルールが PASS または N/A の場合にのみ、全体の判定を PASS とします。1 つでも FAIL があれば、ゲート全体が FAIL です。平均を取ったり、重大度を考慮したり、ルール適用を免除したりしてはいけません。「軽微な」FAIL も FAIL です。
- 判定を出力する。 assets/templates/verdict.md に記入します。FAIL の場合は、レビュアーの「PASS に必要な不足事項」の提案を修正リストにまとめ、それぞれ場所を示し、カテゴリの重要度順に並べます。最終結果が FAIL のルールはすべて修正リストに記載し、そのまま適用できる具体的な変更内容を示さなければなりません。レビュアーの提案が違反の言い換えにすぎない場合は、出力する前にルールの Correct の例を参考に修正方法を導き出してください。
変更のない対象を再レビューするたびに同じルールの判定が変わる場合、または人間が証拠を確認して判定を覆す場合、それはルールの判定可能性に関するバグです。gotchas.md に記録し、ルールを明確化してください。ゲートの判定を覆してはいけません。
判定形式
レビュアーはルールごとに、PASS | FAIL | N/A、証拠(file:line または引用。PASS と FAIL の両方で必須)を返します。また、FAIL ごとに、適用すればそのルールが PASS になる修正を示します。修正には、違反の言い換えではなく、変更内容とその場所を明記します。最終レポートは assets/templates/verdict.md に従います。
ルールのカテゴリ
| # | カテゴリ | プレフィックス | 対象 |
|---|---|---|---|
| 1 | クライアント/サーバーの境界 | boundary- | サーバーコンテキスト内のみの環境変数、ローダーの同型性、公開プレフィックスの規律 |
| 2 | サーバー関数とルート | serverfn- | 入力バリデーター、変更処理での POST、現行の v1 RC API、静的インポート |
| 3 | 認証とセキュリティ | sec- | ハンドラーでの認証、カスタムの開始設定での CSRF、キャッシュのプライバシー、Cookie フラグ、列挙 |
| 4 | SSR とデータ読み込み | ssr- | リクエストごとのルーター/QueryClient、ローダーデータでの useSuspenseQuery、決定論的なレンダリング |
| 5 | 境界における型安全性 | types- | 外部データのスキーマ解析、網羅的な switch、エスケープハッチの監査、非 null アサーション |
| 6 | コンパイラー設定 | tscfg- | strict + noUncheckedIndexedAccess、erasableSyntaxOnly、verbatimModuleSyntax off(Start 固有) |
参照ファイル
| ファイル | 説明 |
|---|---|
| references/reviewer-prompt.md | ブラインドレビュアー向けの自己完結型プロンプトテンプレート |
| assets/templates/verdict.md | 判定レポートのテンプレート |
| references/_sections.md | カテゴリの定義と順序 |
| metadata.json | バージョンとソースの参照情報 |