assessing-external-test-risk について
ブランチや PR に外部エンドツーエンドテストが必要かを評価するスキルです。ブラウザーやデプロイ境界のリスクをチェックリストで確認し、テストを自動で指定せず、根拠に基づく提案を行います。
主な機能
- 01チェックリストによるリスク評価
- 02差分、ファイル、PR 説明の確認
- 03パスや差分に基づく根拠
- 04外部テストの重点項目を提案
活用シーン
- 01ルーティングや認証を変更する PR の評価
- 02iframe、アセット、ブラウザーポリシー変更の確認
- 03デプロイ境界テストの要否判断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ streamlit/ streamlit --skill assessing-external-test-riskインストール後、Claude Code で/assessing-external-test-riskを入力して読み込まれたか確認します。
詳細
外部テストリスクの評価
このスキルは、ブランチまたは PR に @pytest.mark.external_test を使用した外部 e2e カバレッジを含めるべきかどうかを判断するために使用します。
これは、プロキシ、埋め込み iframe コンテキスト、CSP 制約、その他のブラウザセキュリティ境界を伴うことが多いデプロイメントを保護するのに役立ちます。
このスキルはリスク評価と推奨のためのものです。明示的に要求されない限り、テストを自動的にマークすることはありません。
判断ルール
any-hit ポリシーを使用します:
- チェックリストのいずれかのカテゴリに該当する場合、Recommend external_test: Yes を出力します
- どのカテゴリにも該当しない場合、Recommend external_test: No を出力します
レビュー対象の入力
- ベースブランチに対するブランチまたは PR の diff
- 変更されたファイルと関連するテスト
- PR の説明 (利用可能な場合)
評価ワークフロー
- 変更されたファイルとベースブランチに対する完全な diff を収集します。
- 以下の各チェックリストカテゴリを該当するかどうか評価します。
- ファイルパスと diff スニペットから具体的な根拠を記録します。
- 推奨事項と具体的な外部テストの重点領域を作成します。
チェックリストカテゴリ
すべてのカテゴリを評価します。1 つでも該当すれば、外部カバレッジを推奨するのに十分です。
-
ルーティングと URL の動作
- Starlette ルート、
server.baseUrlPath、キャッチオール、リクエストメソッド、URL 解決、リダイレクト、またはステータスコードを導入または変更する変更が該当します。
- Starlette ルート、
-
認証、Cookie、CSRF、およびアイデンティティバインディング
- ログイン/ログアウトまたは OAuth フロー、
_streamlit_user、_streamlit_xsrf、CSRF/XSRF 処理、server.trustedUserHeaders、またはセッションからアイデンティティへのバインディングに触れる変更が該当します。
- ログイン/ログアウトまたは OAuth フロー、
-
Websocket ハンドシェイクとセッショントランスポート
- websocket ハンドシェイクまたはサブプロトコル、セッションアフィニティ、再接続動作、ping またはタイムアウト動作、メッセージサイズ制限、またはフラグメンテーションに影響する変更が該当します。
-
埋め込みと iframe 境界
- ホストからゲストへの通信 (
postMessage)、iframe のサイズ設定またはリサイズ動作、iframe の sandbox または allow 属性、または埋め込みコンテキストにおけるパーミッションポリシーの動作を変更する変更が該当します。
- ホストからゲストへの通信 (
-
静的アセットとコンポーネントアセットの配信
- アセットハンドラ、キャッシュヘッダー、サイズ制限、ベースパス (
server.customComponentBaseUrlPathを含む)、または静的/コンポーネントアセットのプロキシルールを変更する変更が該当します。
- アセットハンドラ、キャッシュヘッダー、サイズ制限、ベースパス (
-
Service Worker、アップロード、およびダウンロード
- Service Worker の登録、スコープ、またはキャッシュ戦略、アップロード/ダウンロードエンドポイント、JWT または CSRF のラッピング、または download 属性の動作を変更する変更が該当します。
-
クロスオリジン動作と外部ネットワーキング
- CORS 許可リスト、
crossOriginの使用、外部オリジンへのフェッチまたは外部ネットワークの動作、またはwindow.__streamlit.*を介したバックエンド URL ディスカバリを変更する変更が該当します。
- CORS 許可リスト、
-
クロスオリジンのテーマ設定とリソースディスカバリ
- オリジンをまたぐテーマ/リソースの読み込み (フォント、画像、テーマグローバル)、ホストページとの CSS 分離、または HTML が Starlette によって配信されない場合のマニフェスト/アセットディスカバリを導入または変更する変更が該当します。
-
SiS および Snowflake ランタイム依存関係
running_in_sis()、get_active_session()、Snowflake 接続/セッションのセマンティクス、または SiS 固有の環境フラグなど、SiS/Snowflake ランタイム動作に依存または変更する変更が該当します。
-
クライアントストレージの動作
- 埋め込みコンテキストまたはサードパーティコンテキストで異なる可能性がある Cookie、
localStorage、またはsessionStorageの使用を導入または変更する変更が該当します。
- 埋め込みコンテキストまたはサードパーティコンテキストで異なる可能性がある Cookie、
-
セキュリティヘッダーとブラウザポリシー
- 埋め込みまたはリソースの読み込みに影響を与える可能性がある CSP、Referrer-Policy、Permissions-Policy、または関連するヘッダーを調整する変更が該当します。
出力形式
次の正確な構造を使用します:
## External test recommendation
- Recommend external_test: [Yes/No]
- Triggered categories: [List category numbers and names, or "None"]
- Evidence:
- `<path>`: [short reason from diff]
- `<path>`: [short reason from diff]
- Suggested external_test focus areas:
- [Concrete scenario to validate externally]
- [Concrete scenario to validate externally]
- Confidence: [High/Medium/Low]
- Assumptions and gaps: [Unknowns, missing context, or why confidence is reduced]
解釈のガイダンス
- 直感よりも根拠を優先します。各該当項目を具体的な diff の詳細に結び付けます。
- 判断に迷う場合、外部でホストされる動作または埋め込み動作がローカル実行と異なる可能性があるなら、Yes に傾けます。
- 重点領域は具体的かつテスト可能に保ちます (ルート、認証ハンドシェイク、iframe 境界、アセットの読み込み、SiS ランタイム動作)。
例
推奨「はい」の例
Diff に含まれるもの:
lib/streamlit/web/server/starlette/starlette_routes.pyのルート変更- リクエスト認証ミドルウェアにおける Cookie/XSRF 処理の更新
- iframe の
allow属性を変更するフロントエンドの埋め込みコード
期待される出力:
Recommend external_test: Yes- トリガーされるカテゴリには、ルーティング、認証/Cookie/CSRF、埋め込み境界が含まれます
- 注力領域には、外部ホストへの iframe 埋め込み + 認証/セッション継続性のチェックが含まれます
推奨「いいえ」の例
Diff に含まれるもの:
- ネットワーク、認証、埋め込み、ストレージ、ランタイム統合への影響がない、内部ユーティリティ関数の純粋なリファクタリング
- ドキュメントとテスト名の整理のみ
期待される出力:
Recommend external_test: No- トリガーされるカテゴリ:
None - 間接的な統合ポイントに触れていない場合、信頼度は高くなります