CommunityRecherche & Datenanalysegithub.com

johnsmithCA-sta/privacy-audit

PII & PIPL/GDPR audit for Agent Skills: 17 sensitive fields + 5 credential formats, anti-false-positive, CI exit codes · 个人信息脱敏审查

Was ist privacy-audit?

privacy-audit is a Claude Code agent skill that pII & PIPL/GDPR audit for Agent Skills: 17 sensitive fields + 5 credential formats, anti-false-positive, CI exit codes · 个人信息脱敏审查.

Funktioniert mitClaude CodeCodex CLI~Cursor
npx skills add johnsmithCA-sta/privacy-audit

Installed? Explore more Recherche & Datenanalyse skills: obra/superpowers, affaan-m/quarkus-verification, affaan-m/uspto-database · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

个人信息脱敏审查(privacy-audit)

用途

对本地技能包、代码库、数据目录执行个人信息脱敏合规审查,产出分级问题清单与标准审查报告。基于中国法域:《个人信息保护法》(主席令第91号)、《数据安全法》、《网络安全法》(2025修正)、GB/T 35273-2020、GB/T 45574-2025(2025-11-01 实施)、GB/T 43697-2024、《个人信息保护合规审计管理办法》(2025-05-01 施行)等。审查从严:凡无明确依据允许的处理一律按"不得"执行。

适用场景:AI 技能/代码/文档发布前安全检查、数据集对外分享前脱敏核验、日志与配置泄露排查、合规审计报告产出。 定位区分:本技能是"审查/审计"(发现 + 分级 + 整改建议 + 依据索引),不是"脱敏执行器"。需要直接掩码/替换数据的场景请使用脱敏工具类技能;本技能负责在事前判定"该不该发、哪里违规、依据哪条法规"。 商业化定位(v1.2.0):面向"AI 技能/应用发布前合规自查"场景,支持扣子等对话式平台使用(用户上传附件/粘贴文本即可扫描,无需本地目录),可作为付费技能上架。

触发词

  • 脱敏审查 / 隐私审查 / 隐私合规检查 / 合规审查 / 隐私保护审计 / privacy audit / desensitization audit
  • 敏感信息扫描 / PII 扫描 / PII scan / 敏感字段检测 / 个人信息扫描 / 数据泄露排查
  • 扫描这个目录有没有个人信息 / 扫描这个技能有没有个人信息
  • 身份证号扫描 / 检查代码里有没有手机号 / 代码里有没有身份证号 / 银行卡号泄露检查
  • 仓库里有没有硬编码密钥 / 日志里有没有明文密码 / 上传文件有没有敏感信息
  • 这个技能有没有泄露隐私 / 这个技能能不能发布 / 分享前要不要脱敏 / 数据集脱敏核查
  • 脱敏整改建议 / 出一份合规审查报告 / 发布前安全检查 / 上架前合规审查

环境准备

# 依赖:Python 3.8+,纯标准库,无第三方依赖
export SKILL_DIR=~/.workbuddy/skills/privacy-audit   # 技能安装路径
export TARGET_DIR=/path/to/待审查目录                  # 待审查目录(代码/技能/数据)
export REPORT_DIR=/path/to/报告输出目录                # 建议在扫描目录之外,避免自我命中

执行流程

第一步:L1 自动扫描(先机器,后人工)

# 单目录扫描 + JSON 报告
python3 "$SKILL_DIR/scripts/privacy_audit.py" "$TARGET_DIR" \
  --rules "$SKILL_DIR/scripts/字段检测正则库.json" \
  --json "$REPORT_DIR/audit_result.json"

# v1.1.0 批量目录扫描(多个目录合并审计)+ HTML 可视化报告
python3 "$SKILL_DIR/scripts/privacy_audit.py" "$TARGET_DIR_A" "$TARGET_DIR_B" \
  --rules "$SKILL_DIR/scripts/字段检测正则库.json" \
  --json "$REPORT_DIR/audit_result.json" \
  --html "$REPORT_DIR/audit_result.html"
  • 扫描 17 类敏感字段:身份证号 / 手机号 / 银行卡号 / 邮箱 / IP / 精确地址 / 精确定位坐标 / 医师署名 / 医院机构名 / 密码明文 / 医疗健康信息 / 未成年人信息 / 车牌号 / 护照号 / 微信号 / QQ 号 / 统一社会信用代码(v1.1.0 新增)
  • 检测 5 类硬编码凭证:SkillHub key / GitHub token / OpenAI key / 腾讯云 SecretId / COS 临时凭证
  • 退出码(可接入 CI 门禁):0=通过;1=高危命中(禁止发布);2=中敏感命中(需人工确认)
  • --json:结构化报告(含 scanned_roots/summary/verdict/findings,CI 可消费);--html:自包含可视化报告(总览卡片 + 分级分布图 + 按文件分组命中清单,离线可看)
  • --strict:一般级别命中也判失败;--quiet:仅输出结果行

对话式扫描(v1.2.0 新增,适配扣子等对话场景,无需本地目录)

# 单文件扫描(用户上传的附件,如 .py/.md/.json/.txt 等文本文件)
python3 "$SKILL_DIR/scripts/privacy_audit.py" --file /path/to/uploaded.py \
  --rules "$SKILL_DIR/scripts/字段检测正则库.json" \
  --json "$REPORT_DIR/audit_result.json"

# 文本内容扫描(用户粘贴的代码/文本片段)
python3 "$SKILL_DIR/scripts/privacy_audit.py" --text "待审文本内容" \
  --rules "$SKILL_DIR/scripts/字段检测正则库.json"

# 标准输入扫描(管道传入)
echo "待审文本" | python3 "$SKILL_DIR/scripts/privacy_audit.py" --stdin \
  --rules "$SKILL_DIR/scripts/字段检测正则库.json"

第二步:L2 完整审查(六维度人工对照)

references/个人信息脱敏审查规范.md 为执行依据,逐维度对照:

  1. 识别与分类:字段清单是否完整、敏感级别标注、组合重标识风险、未成年人特别标注
  2. 脱敏方式与场景:去标识化/匿名化选择是否与敏感度匹配(不可逆优先;可逆必须密钥管控)
  3. 字段级脱敏:逐字段核对存储/展示/传输/共享四环节(重点:身份证/银行卡必须加密存储;界面默认掩码;日志不得留明文)
  4. 流程与检查清单:33 项清单逐项勾选(A 前置识别 5 项 / B 存储 6 项 / C 展示 6 项 / D 日志 4 项 / E 共享 5 项 / F 测试 2 项 / G 技术保障 6 项)
  5. 违规场景排查:15 项高频违规场景逐项排查(明文存储、界面未掩码、超范围收集、自动勾选同意、强制人脸、日志明文、泄露未通知、开盒买卖、跨境未评估等)
  6. 合规依据核验:法规名称/文号/日期与国标编号以规范第六部分为准,不得改动

第三步:整改与验证

  • 高风险(P0)必须修复:移除硬编码凭证 → 环境变量/密钥管理;明文敏感数据 → 加密存储 + 掩码展示
  • 修复后重跑 L1 扫描,确认退出码降为 0(或仅剩低风险)
  • 中风险(P1)建议下轮迭代修复;低风险(P2)记录后续优化

第四步:输出标准报告

references/审查报告模板.md 为结构生成报告:审查对象与数据画像 → 结果总览 → 分级问题清单(P0/P1/P2)→ 合规项核验 → 整改优先级 → 检查清单对照表 → 结论与免责声明。

依赖清单

  • Python 3.8+(标准库:argparse / json / os / re / sys)
  • 无第三方依赖;可选 --json 输出结构化报告供 CI 消费

边界与安全(红线)

  1. 不构成法律意见:报告结论必须结合具体业务场景,高敏感场景建议人工复核 + 咨询合规律师
  2. 报告输出到扫描目录之外:避免审计报告被二次扫描命中,也避免报告落进待发布产物
  3. 全程本地:不调用任何云 API,不传输待审内容
  4. 二进制跳过:.zip/.png/.pdf/.docx/.xlsx/.pyc 等不扫描内容(如需扫描先解压/转文本)
  5. 禁止删除:本技能只报告,不删除、不修改任何被审文件

踩坑内嵌(经验教训,勿重蹈)

根因方案(已内建于脚本)
坐标常量/随机长数字串被误报为身份证/银行卡纯正则只匹配"形状"不校验"合法性"身份证 MOD 11-2 校验码验证、银行卡 Luhn 校验,校验不过即误报跳过
身份证内部数字被手机号/银行卡正则二次命中正则优先级冲突区间去重:命中区间完全落在更高优先级命中内 → 跳过(如 110101 开头 6 位不会误报手机号)
长数字串(如 0.00669342162296594323 坐标常量)子串命中手机号手机号正则无边界手机号正则加前后数字边界 (?<![0-9])…(?![0-9])
审计报告写进扫描目录被二次命中报告本身含"命中样例"报告输出到扫描目录之外(--json 指向外部目录)
Windows 下中文文件编码乱码文件可能是 GBK 而非 UTF-8read_text 先试 UTF-8,失败按可打印字符比例兜底解码
node_modules/.git 等大目录拖慢扫描无过滤全扫内置 SKIP_DIRS(.git/pycache/node_modules/.venv/dist/build 等)
正则库 JSON 新增字段后脚本行为不一致正则库与脚本分离导致失同步正则库 JSON 是唯一事实源,脚本动态加载;新增字段类型先改 JSON 再跑脚本
正则库 JSON 中的 pattern 定义文本被自身命中(如"人民医院"字样出现在医院名正则里)规则定义本身就是敏感词样本属正常现象,自审出现该命中时人工确认为 pattern 定义后忽略即可(保守方向,宁可 REVIEW 不漏报)
"北京市A12345"地名+数字被误报车牌号车牌正则无边界,子串"京A12345"命中车牌正则加前后汉字/字母数字边界 (?<!…)(?<![\u4e00-\u9fa5])…(?![…]),结构校验器(省+字母+长度7/8)双保险
随机 18 位数字串有约 1/31 概率通过统一社会信用代码 GB 32100 校验模 31 校验对随机串天然放行概率USCC 定位"中敏感"(REVIEW 需人工确认)而非高敏感,正是为此留的兜底;负控制测试用真实非法末位
测试样例标签自命中(如"伪微信号: xxx"被微信号正则命中)标签本身含触发前缀+合法格式属正确行为(真实场景"微信号: xxx"就该命中);测试样例设计时避免在标签中复现触发前缀
evals/ 用例含虚构敏感样本导致 preflight --strict 报 phone/email 告警测试用例必须有真实形态的样本才能测出检测能力,而发布门禁的敏感扫描不区分真假发布自检时用 --waive phone --waive email --reason "evals 用例含虚构测试样本,非真实个人信息" 豁免并落盘留痕;.preflight-waiver.json 发布前删除;样本文件首行统一标注「虚构测试数据」
随机 18 位数字串(如时间戳+序号)约 1/11 概率通过身份证 MOD 11-2 校验被误报校验码只保证合法性不保证真实性,随机串天然有放行概率属已知局限:人工确认为序号/时间戳/流水号后忽略;不要为此放宽正则(宁可 REVIEW 不漏报)

使用示例(对话模拟)

用户:帮我审查一下 ~/projects/skill-demo 这个目录,能不能发布?
Agent:
  1. 运行 L1 扫描:
     python3 ~/.workbuddy/skills/privacy-audit/scripts/privacy_audit.py ~/projects/skill-demo \
       --rules ~/.workbuddy/skills/privacy-audit/scripts/字段检测正则库.json --json ~/reports/demo_audit.json
  2. 退出码 1 → 命中 2 处高危(GitHub token 硬编码 + 身份证明文)→ 判定禁止发布
  3. 对照《审查规范》做 L2 六维度核对:存储未加密、展示未掩码、日志含明文…
  4. 输出分级问题清单(H-1 硬编码 token / H-2 身份证明文存储 / M-1 日志明文…)
  5. 整改建议 + 标准报告 → 用户修复后重跑 L1 → 退出码 0 → 允许发布

参考文档

  • references/个人信息脱敏审查规范.md:完整六维度规范(L1/L2 分层、33 项清单、15 项违规场景、18 部法规 + 6 项国标索引、附录工具说明)——审查执行的唯一事实依据
  • references/个人信息脱敏审查要点.md:六维度要点(法规背景与判断维度详解;来源档位 官方 = 法律法规与国标,社区共识 = 公开执法/司法典型案例与行业实务)
  • references/审查报告模板.md:L2 标准报告结构模板
  • references/Changelog.md版本史唯一事实源(1.0.0 → 当前版本的完整变更记录与版本口径说明)
  • evals/回归评测集(10 条可执行用例 + trigger_eval.json 触发词意图集),改动本技能后跑一次验证没把既有能力改坏,跑法见 evals/README.md

版本与事实源

  • 当前版本号以 SKILL.md frontmatter 的 version 为准;发布 tag、README 版本摘要、references/Changelog.md 的当前版本条目全部与之对齐。
  • 历史变更以 references/Changelog.md 为唯一事实源。SKILL.md 与 README 里的 Changelog 都只是最近两版的摘要 + 指向该文件的链接,不要在各处各记一套完整版本史——三处全量并列必然漂移。
  • 正文里的 v1.1.0 新增 / v1.2.0 新增 是功能归属标注:标注该功能首次出现在哪个版本,属历史记录,不随当前版本号改动(当前版本已是 1.3.0,标注仍保留原样)。
  • scripts/字段检测正则库.json 里的 "version": "1.1.0" 是规则库版本:独立于技能版本,只在字段类型/正则/校验器实际变更时才递增。1.2.0 只改了扫描入口(--file/--text/--stdin)未改规则,故规则库仍为 1.1.0 —— 这是正确状态,不是笔误,不要"顺手对齐"。

Changelog

完整版本史见 references/Changelog.md(唯一事实源),下表为最近两版摘要。

日期版本变更类型变更内容来源
2026-09-061.3.1优化新增站内标签(隐私保护/脱敏/PII/个人信息保护等 6 项),功能无变化SkillHub 端优化
2026-08-291.3.0优化触发词覆盖率 58% → 100%(新增 evals/trigger_eval.json 意图集 16 条 + 触发词簇扩至 30 条);description 由 444 字符收敛至 238 字符,细节下沉正文;新增 evals/ 可执行评测用例集 10 条(--run --aggregate 均分 1.00);新增 references/Changelog.md;确立版本与版本史两处事实源口径体检报告整改
2026-08-191.2.0新增脚本新增 --text/--stdin/--file 单文件/文本扫描入口(适配扣子对话式输入,无需本地目录);定位收敛为"发布前合规门禁";新增商业化定位说明扣子上架改造

(1.1.0 及更早条目见 references/Changelog.md

免责声明

本技能由 AI 辅助生成,仅供参考,不构成正式法律意见,不能替代具有执业资格的律师。具体合规判断应结合业务场景咨询专业法律人员,并以最新生效法律法规为准。

Verwandte Skills