play-policy-insights について
Androidアプリのポリシー監査を行うスキルです。データセーフティ、デモ用ログイン認証情報、制限付き権限を対象に、段階的な分析とレポート作成の手順を定めています。
主な機能
- 01データセーフティの申告内容を監査
- 02デモ用ログイン認証情報を確認
- 03制限付き権限を確認
- 04所定のフェーズで監査項目を分析
- 05結果を集約してレポートを作成
活用シーン
- 01リリース前のAndroidポリシー適合性確認
- 02アプリ権限とデータセーフティ情報の点検
- 03コンプライアンス監査レポートの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ android/ skills --skill play-policy-insightsインストール後、Claude Code で/play-policy-insightsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
resources/common_mandates.mdcompliance_report_template.mdcritic.mdgoal_data_safety.mdgoal_permissions_and_apis.mdgoal_user_account.mdpolicies.jsonscanner_config.jsonscripts/generate_report.pyorchestrator.pyplay_store_scraper.pyscanner.pytemplate_engine.py詳細
Play Policy Insights:データセーフティ、ログイン認証情報、制限付き権限
Android アプリについて、3 つの特定のポリシー領域を監査する必要があります。データセーフティ、デモ用ログイン認証情報、制限付き権限を確認してください。
パスの解決
- repo_root:この
SKILL.mdを含むディレクトリの絶対パスです。 - app_dir:アプリのコードを含むディレクトリの絶対パスです。
- temp_dir:ワークスペースのルートにあるスクラッチディレクトリの絶対パスです。
.scratch/play_policy_insights_<uuid>にあります。格納場所に関する必須要件:すべてのファイルシステムへの書き込み、中間生成物、ログは、このディレクトリ内に厳密に限定する必要があります。これにより、システムレベルの一時パスやユーザーのホームディレクトリに依存せず、ローカルハーネスや CI/CD パイプラインを含む多様な実行環境で、このスキルの移植性と安全性を確保できます。
重要な必須要件
-
実行モードの確認 Phase 2 を開始する前に、実行環境に汎用サブエージェントへのタスクの起動または委任を行うツール(例:
invoke_agent、delegate_task、spawn_workerなどの名称のツールで、'generalist' や 'coding_agent' などの汎用エージェントプロファイルを使用するもの)があるかを確認してください。 -
YES の場合、必ず Mode A(委任) を使用してください。
-
NO の場合、Mode B(順次自己実行) を使用してください。サブエージェント用のプロンプトファイルを読み、その指示に従って、指定された出力ファイルをディスクに書き込む必要があります。
-
サブエージェントのオーケストレーション:
-
「Mode A(委任)」を使用する場合、サブエージェントから完了を示す「SUCCESS」の確認が届くまで待ってください。
-
冪等性とタイムアウトに関する保護策:サブエージェントが失敗またはタイムアウトした場合、再試行する前に、対象の出力ファイル(例:
<temp_dir>/worker_<goal_name>.json)の有無と整合性を必ず確認してください。ファイルが存在し、有効な JSON が含まれている場合は、実行をSUCCESSとして扱い、続行してください。それ以外の場合は、最大 3 回まで再試行してください。
-
-
フェイルファストの必須要件:Phase 1 の自動監査が唯一の信頼できる情報源です。
orchestrator.pyが失敗した場合は、失敗の説明を添えて直ちに停止してください。手動監査で代替してはいけません。
2 段階のプロトコル
Phase 1:情報収集とトリアージ
- 初期化とトリアージ:
python3 <repo_root>/scripts/orchestrator.py init <app_dir>を実行してください。- これによりスクラッチ環境が作成され、静的解析とコードベースのマッピングが実行され、監査目標が特定されます。また、各監査目標のサブエージェント用プロンプトと、指定された批評担当および集約担当サブエージェント用のプロンプトが作成されます。
- スクリプトが完了するまで(最大 5 分)待ってください。
- 環境の記録:JSON 出力から
temp_dirとactivated_goalsの値を記録してください。Phase 2 で必要になります。 - 目標の評価:
activated_goalsが空の場合は、Phase 2 のステップ 3(集約)に進んでください。それ以外の場合は、Phase 2 のステップ 1(詳細分析)に進んでください。
Phase 2:目標指向の監査
実行能力を確認し、Mode A または Mode B のいずれかで進めてください。
モード A:委任機能を備えたオーケストレーター(並列)
- 詳細分析:
activated_goalsに含まれる各目標(例:permissions_and_apis、data_safety_part_1、data_safety_part_2)について、 サブエージェントに委任します。同時実行数の上限: 同時に起動できる サブエージェントは最大 3 つです。最初に最大 3 つを起動し、完了を待ってから 次のバッチを起動します。すべての目標が完了するまで繰り返します。次のプロンプトを渡します:"Read your instructions from <temp_dir>/prompt_worker_<goal_name>.md and execute. MANDATORY: You must use your file-writing capabilities to save your final JSON findings directly to the file system at <temp_dir>/worker_<goal_name>.json. You are strictly forbidden from outputting the JSON in your chat response. To minimize context usage, your final response must be exactly 'SUCCESS' and nothing else."検証:すべての<temp_dir>/worker_<goal_name>.jsonが存在し、有効な JSON を含んでいることを確認します。 サブエージェントが失敗またはタイムアウトしても、有効な JSON 出力ファイルがすでに ディスク上にある場合は、再試行せず通常どおり進めます。ファイルが存在しないか 無効な場合に限り、該当するワーカーのみ最大 3 回まで再試行します。 - 調査結果の集約:次の Python 集約コマンドを実行します:
python3 <repo_root>/scripts/orchestrator.py aggregate <temp_dir>。これによりaggregated_findings.jsonが生成され、検証するチャンク数を示すcritic_chunksを含む JSON オブジェクトが返されます(例:{"temp_dir": "...", "critic_chunks": 2})。 - 並列クリティックレビュー:チャンクインデックス
iを 1 からcritic_chunksまで順に確認し、それぞれをサブエージェントに委任します。 同時実行数の上限: 同時に起動できるクリティックサブエージェントは 最大 3 つです。上記と同様に、3 つずつのグループに分けて処理します。次のプロンプトを渡します:"Read your instructions from <temp_dir>/prompt_critic_<i>.md and execute. MANDATORY: You must use your file-writing capabilities to save your final JSON findings directly to the file system at <temp_dir>/critic_output_<i>.json. You are strictly forbidden from outputting the JSON in your chat response. To minimize context usage, your final response must be exactly 'SUCCESS' and nothing else."検証:先へ進む前に、各<temp_dir>/critic_output_<i>.jsonが存在し、 有効な JSON を含んでいることを確認します。失敗またはタイムアウトしても、有効な JSON ファイルが存在する場合は通常どおり進めます。それ以外の場合は、該当する クリティックチャンクを再試行します。 - 最終処理に進む(以下のステップ 4)
モード B:委任機能を持たないオーケストレーター(逐次)
- 詳細分析:
activated_goalsに含まれる各目標について、順番に次を行います:<temp_dir>/prompt_worker_<goal_name>.mdの内容を読みます。- そのファイルに記載された指示を自分で実行します。
- 重要:指示で要求されたとおりの形式で調査結果を必ず作成し、
<temp_dir>/worker_<goal_name>.jsonに保存します。調査結果を思考やチャット内で 要約してはいけません。次のタスクに進みます。 - 検証:次の目標に進む前に、
<temp_dir>/worker_<goal_name>.jsonが存在することを確認します。
- 調査結果の集約:次の Python 集約コマンドを実行します:
python3 <repo_root>/scripts/orchestrator.py --aggregate <temp_dir>。これによりaggregated_findings.jsonが生成され、検証するチャンク数を示すcritic_chunksを含む JSON オブジェクトが返されます。 - 逐次クリティックレビュー:チャンクインデックス
iを 1 からcritic_chunksまで順に処理します:<temp_dir>/prompt_critic_<i>.mdの内容を読みます。- 手順を自分で実行し、調査結果を
<temp_dir>/critic_output_<i>.jsonに保存します。 - 検証:次のチャンクに進む前に、
<temp_dir>/critic_output_<i>.jsonが存在することを確認します。
- 最終処理に進む(以下のステップ 4)
最終処理(両モード)
- 調査結果を提示する:
python3 <repo_root>/scripts/generate_report.py <temp_dir>を実行します。<temp_dir>/compliance_report.mdが生成されます。この出力ファイルをユーザーに提示してください。 - 停止:監査は完了です。次の指示を待ちます。