mcpField
P
play-policy-insights

play-policy-insights

github.com/androidセキュリティ10.0k1.4k 回インストール2 日前に更新
リポジトリ

play-policy-insights について

Androidアプリのポリシー監査を行うスキルです。データセーフティ、デモ用ログイン認証情報、制限付き権限を対象に、段階的な分析とレポート作成の手順を定めています。

主な機能

  1. 01データセーフティの申告内容を監査
  2. 02デモ用ログイン認証情報を確認
  3. 03制限付き権限を確認
  4. 04所定のフェーズで監査項目を分析
  5. 05結果を集約してレポートを作成

活用シーン

  1. 01リリース前のAndroidポリシー適合性確認
  2. 02アプリ権限とデータセーフティ情報の点検
  3. 03コンプライアンス監査レポートの作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/android/skills --skill play-policy-insights

インストール後、Claude Code で/play-policy-insightsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

resources/
common_mandates.md
compliance_report_template.md
critic.md
goal_data_safety.md
goal_permissions_and_apis.md
goal_user_account.md
policies.json
scanner_config.json
scripts/
generate_report.py
orchestrator.py
play_store_scraper.py
scanner.py
template_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:情報収集とトリアージ
  1. 初期化とトリアージ:
    • python3 <repo_root>/scripts/orchestrator.py init <app_dir> を実行してください。
    • これによりスクラッチ環境が作成され、静的解析とコードベースのマッピングが実行され、監査目標が特定されます。また、各監査目標のサブエージェント用プロンプトと、指定された批評担当および集約担当サブエージェント用のプロンプトが作成されます。
    • スクリプトが完了するまで(最大 5 分)待ってください。
  2. 環境の記録:JSON 出力から temp_dir と activated_goals の値を記録してください。Phase 2 で必要になります。
  3. 目標の評価:activated_goals が空の場合は、Phase 2 のステップ 3(集約)に進んでください。それ以外の場合は、Phase 2 のステップ 1(詳細分析)に進んでください。
Phase 2:目標指向の監査

実行能力を確認し、Mode A または Mode B のいずれかで進めてください。

モード A:委任機能を備えたオーケストレーター(並列)
  1. 詳細分析: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 回まで再試行します。
  2. 調査結果の集約:次の Python 集約コマンドを実行します: python3 <repo_root>/scripts/orchestrator.py aggregate <temp_dir>。これにより aggregated_findings.json が生成され、検証するチャンク数を示す critic_chunks を含む JSON オブジェクトが返されます(例: {"temp_dir": "...", "critic_chunks": 2})。
  3. 並列クリティックレビュー:チャンクインデックス 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. 最終処理に進む(以下のステップ 4)
モード B:委任機能を持たないオーケストレーター(逐次)
  1. 詳細分析:activated_goals に含まれる各目標について、順番に次を行います:
    • <temp_dir>/prompt_worker_<goal_name>.md の内容を読みます。
    • そのファイルに記載された指示を自分で実行します。
    • 重要:指示で要求されたとおりの形式で調査結果を必ず作成し、 <temp_dir>/worker_<goal_name>.json に保存します。調査結果を思考やチャット内で 要約してはいけません。次のタスクに進みます。
    • 検証:次の目標に進む前に、<temp_dir>/worker_<goal_name>.json が存在することを確認します。
  2. 調査結果の集約:次の Python 集約コマンドを実行します: python3 <repo_root>/scripts/orchestrator.py --aggregate <temp_dir>。これにより aggregated_findings.json が生成され、検証するチャンク数を示す critic_chunks を含む JSON オブジェクトが返されます。
  3. 逐次クリティックレビュー:チャンクインデックス i を 1 から critic_chunks まで順に処理します:
    • <temp_dir>/prompt_critic_<i>.md の内容を読みます。
    • 手順を自分で実行し、調査結果を <temp_dir>/critic_output_<i>.json に保存します。
    • 検証:次のチャンクに進む前に、<temp_dir>/critic_output_<i>.json が存在することを確認します。
  4. 最終処理に進む(以下のステップ 4)
最終処理(両モード)
  1. 調査結果を提示する:python3 <repo_root>/scripts/generate_report.py <temp_dir> を実行します。 <temp_dir>/compliance_report.md が生成されます。この出力ファイルをユーザーに提示してください。
  2. 停止:監査は完了です。次の指示を待ちます。

コメント