关于 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 应用。你必须检查数据安全、演示登录凭据和受限权限。
路径解析
- repo_root:包含此
SKILL.md的目录的绝对路径。 - app_dir:包含应用代码的目录的绝对路径。
- temp_dir:工作区根目录下临时目录的绝对路径。
该目录位于
.scratch/play_policy_insights_<uuid>。目录约束要求:所有文件系统写入、中间产物和日志都必须严格限制在此目录中。这可确保该技能在各种执行环境中保持可移植且安全,包括本地测试环境和 CI/CD 管道,避免依赖系统级临时路径或用户主目录。
关键要求
-
执行模式意识:在开始第 2 阶段之前,评估你的执行环境是否提供了用于启动或委派任务给通用子 Agent 的工具(例如,通常名为
invoke_agent、delegate_task或spawn_worker的工具,并使用诸如“generalist”或“coding_agent”之类的通用 Agent 配置)。 -
如果答案是 YES,则必须使用 模式 A(委派)。
-
如果答案是 NO,则使用 模式 B(顺序自行执行)。你必须阅读为子 Agent 编写的提示词文件,遵循其中的说明,并将预期输出文件写入磁盘。
-
子 Agent 编排:
-
如果使用“模式 A(委派)”,请等待子 Agent 确认“SUCCESS”,以确认任务已完成。
-
幂等性与超时保护:如果子 Agent 失败或超时,在重试之前,你必须检查其目标输出文件(例如
<temp_dir>/worker_<goal_name>.json)是否存在且完整。如果文件存在且包含有效 JSON,则将执行视为 SUCCESS 并继续。否则,最多重试三次。
-
-
快速失败要求:第 1 阶段的自动审核是事实依据。如果
orchestrator.py失败,你必须立即停止并说明失败原因。不得以人工审核作为备用方案。
两阶段流程
第 1 阶段:事实收集与分流
- 初始化并分流:
- 运行
python3 <repo_root>/scripts/orchestrator.py init <app_dir>。 - 这将创建临时环境、执行静态分析、梳理代码库、确定审核目标,并为每个审核目标的子 Agent 以及指定的评论员和汇总员子 Agent 生成提示词。
- 你必须等待脚本完成,最长等待 5 分钟。
- 运行
- 记录环境信息:记录 JSON 输出中的
temp_dir和activated_goals值。你将在第 2 阶段中用到它们。 - 评估目标:如果
activated_goals为空,则跳至第 2 阶段的第 3 步(汇总)。否则,进入第 2 阶段的第 1 步(详细分析)。
第 2 阶段:以目标为导向的审核
确定你的执行能力,并选择模式 A 或模式 B 继续。
模式 A:具备委派能力的协调器(并行)
- 详细分析:针对
activated_goals中的每个目标(例如permissions_and_apis、data_safety_part_1、data_safety_part_2), 委派给子 Agent。**并发限制:**同时运行的子 Agent 不得超过 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。如果子 Agent 失败或 超时,但有效的 JSON 输出文件已存在于磁盘上,则不要重试,正常继续。只有在文件缺失或无效时, 才重试对应的工作 Agent(最多三次)。 - 汇总发现:执行 Python 汇总命令:
python3 <repo_root>/scripts/orchestrator.py aggregate <temp_dir>。此命令会生成aggregated_findings.json,并返回一个 JSON 对象,其中的critic_chunks表示需要验证的分块数(例如{"temp_dir": "...", "critic_chunks": 2})。 - 并行审查:针对从 1 到
critic_chunks的每个分块索引i,委派给子 Agent。**并发限制:**同时运行的审查子 Agent 不得超过 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,并返回一个 JSON 对象,其中的critic_chunks表示需要验证的分块数。 - 顺序审查:依次处理索引
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。将此输出文件呈现给用户。 - 停止:审计已完成。等待进一步指示。