关于 sdd-higiene-dado
sdd-higiene-dado 是面向在 Git 项目中处理客户数据者的 Agent 技能。它引导用户检查、安装、说明和移除提交时的警报;安装前必须获得明确同意,警报会拦截指定敏感数据。
主要功能
- 01检查警报状态与版本
- 02经同意后安装或移除警报
- 03拦截新增行中的有效 CPF/CNPJ
- 04拦截密钥及新建电子表格
- 05说明并处理被拒绝的提交
适用场景
- 01提交保存前保护项目
- 02了解提交被拦截的原因
- 03从项目中移除该技能的警报
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ robertodiasduarte/ sdd-starter --skill sdd-higiene-dado安装后在 Claude Code 中输入/sdd-higiene-dado确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
CHANGELOG.mdmanifest.jsonagents/openai.yamlevals/cases.jsonreferences/COMO_FUNCIONA.mdESCOPO_CONFIRMADO.mdRUNTIME_COMPATIBILITY.mdscripts/alarme.shpre-commit.shtests/test_alarme.py详细介绍
数据卫生
首次响应此技能时,只需在开头写一次这一行:
sdd-higiene-dado v1.1.0 · out/2026 · versão atual: https://github.com/robertodiasduarte/sdd-starter/releases/latest
这是一个在处理客户数据的人员的电脑上,每次 git commit 时运行的警报。它不会阻止工作:它会拒绝可疑的提交、说明原因,并让对方自行决定。
快速开始
SKILL_ROOT 是包含此 SKILL.md 的文件夹(.claude/skills/sdd-higiene-dado/ 或
.agents/skills/sdd-higiene-dado/,位于项目目录或 Agent 的全局目录中)。在项目文件夹中运行:
bash "$SKILL_ROOT/scripts/alarme.sh" verificar # só lê
bash "$SKILL_ROOT/scripts/alarme.sh" instalar # só depois do OK explícito
bash "$SKILL_ROOT/scripts/alarme.sh" desinstalar
何时使用 / 何时不使用
适用于:
- 在某个项目中安装警报,前提是得到对方同意;
- 说明警报拒绝某次提交的原因以及如何修正;
- 卸载警报;
- 告知警报是否已安装以及安装的版本。
不适用于(并告知用户):
- 删除文件、从历史记录中移除文件或重写提交 — 提供命令,由用户运行;
- 撤销证书、修改密码或操作外部账户;
- 读取
.xlsx、.xls或.ods文件中的 CPF,或扫描旧提交 — 警报只会检查当前即将提交的内容; - 对 LGPD、职业保密义务或会计师的责任发表意见;
- 对环境进行一般性诊断 — 这由只读取信息的
sdd-checar-ambiente负责。
所需条件
- 一个在项目文件夹中打开的 bash 和 git 终端(Claude Code、Codex 或用户的终端)。macOS 和 Linux 已自带;Windows 用户可使用 Git for Windows 自带的 Git Bash。
- 该文件夹必须是 git 仓库(如果不是,
alarme.sh会提示)。 - 在执行
instalar前,必须获得用户明确同意。沉默、对其他问题的“好”,或之前的请求都不算同意。
如果没有终端(claude.ai 或网页端 ChatGPT),此技能无法安装或验证任何内容:用一句话说明这一点,并建议用户在项目文件夹中通过 Claude Code 或 Codex 运行此技能。 不要把警报的内容交给用户手动粘贴。
如何与学员沟通
使用此技能的人通常从未用过 git。每条回复都是一个需要说明清楚的步骤,而不是技术报告。
始终使用以下 3 个步骤名称(另有两个流程外处理):
| 步骤 | 给学员的名称 | 此技能中的步骤 |
|---|---|---|
| 1 | 检查 | 步骤 1(只读取) |
| 2 | 说明 | 步骤 2 |
| 3 | 安装 | 步骤 3 |
| — | Commit 被拒绝 | 步骤 4(警报拦截某个版本时) |
| — | 卸载 | 步骤 5(学员提出请求时) |
每条回复都包含以下部分,顺序如下(没有内容的部分可跳过):
- 状态 — 一行:
✅ 1 Verificar · ▶️ 2 Explicar · ⬜ 3 Instalar(✅ 已完成 — 不只是访问过;▶️ 当前步骤;⬜ 待处理;⏸️ 已暂停;➖ 已跳过)。流程外处理使用▶️ Commit recusado或▶️ Desinstalar。返回某个步骤时,原因写在 现在 中。 - 已完成的操作 — 用简短句子说明上一步的结果,不要贴命令输出。记录学员的选择:"你选择了是:我安装了警报……"。
- 现在:步骤 N — 名称 — 用 2 到 4 句话说明此步骤要做什么以及原因,表达方式要适合从未见过终端的人。如果要写入任何内容,请按编号列出将要执行的操作,以及不会发生的事情(不会向互联网发送任何内容;不会修改你的任何文件 — 只会修改一个 git 文件)。执行耗时操作(例如
verificar扫描)之前,用一句话说明将运行什么,且学员无需回复。 - 你的决定 — 用粗体提出问题,并列出选项及各自会发生的事情。此技能中的问题包括:"我可以在这个项目中安装警报吗?"(步骤 2)和 "我们如何处理这个文件?"(步骤 4)。如果需要开放式问题(询问哪个文件、哪一行),请说明如何作答,并提供“我不知道”这一选项;有多个问题时按编号列出。回答不符合任何选项(例如有疑问或回答“我觉得可以”)⇒ 解答疑问并重复列出选项。
- 下一步 — 用一行说明收到答复后会发生什么。
语言规则:
- 每条回复只处理一个步骤。以提出决定结束并停下:不要接着进入下一步。
- 技术词首次出现时必须附带解释 — 包括状态中的术语:
- git — “项目的版本历史记录(git)”;
- commit — “一个已保存的版本(commit)”:当时所有文件的快照,并带有日期;
- 警报 — “一个检查器,会在每个版本保存前检查并拦截 CPF/CNPJ、密码和电子表格”;
.gitignore— “排除项列表”:列在其中的内容只会保留在这台电脑上;--no-verify— “这一次绕过警报进行保存”;.env— “项目的密码文件”;- A1 证书 — “代表公司进行签名的文件(
.pfx、.p12)”; - 校验位 — “用于判断 CPF 或 CNPJ 是否真正有效的计算结果”。
不要提及 hook、pre-commit、
core.hooksPath或 staged;说明其作用即可。
- 不要原样转发命令输出。 将
verificar和instalar的输出改写成句子:说明文件所在位置、版本、如何绕过警报以及如何卸载。文件名最多列出 10 个,其余写“以及另外 N 个”。始终遮盖找到的号码。只有学员需要运行命令时才提供命令 — 并按编号列出,每步一个命令,同时说明屏幕上会显示什么。 - 不要提及或概述此技能或其他技能的说明(例如“技能要求……”或“按照步骤 2……”)。说明与学员有关的原因:"CPF 一旦提交到 GitHub 就无法撤销,因此警报会在提交前进行检查。"
- 暂停时也要列出步骤。 如果不在 git 仓库中,或已安装了其他警报:状态标为 ⏸️,用一句话说明原因,指出操作位置(终端、文件夹),按编号列出步骤并说明每一步会看到什么,说明没有做什么("没有安装任何内容。"),如果学员还需要操作,则说 "完成后请再找我 — 我会从这里继续。"
分步流程
-
检查。 运行
bash "$SKILL_ROOT/scripts/alarme.sh" verificar并查看状态:- 未安装任何警报 — 继续第 2 步;
- 已安装此技能的警报 — 告知已安装的版本;再次安装会更新;
- 其他警报(husky、lefthook、
core.hooksPath、手动编写的 pre-commit)— 不要安装。 显示脚本输出的内容,包括需要手动添加到现有警报中的那一行,然后停止。
-
说明并征求同意。 用几行话、不使用术语说明:
- 警报会拒绝什么:新增行中有效的 CPF 或 CNPJ;
.env(.env.example和.env.sample除外);含有私钥的.pfx、.p12和.pem;任何大小的新电子表格(.xlsx、.xls、.ods、.csv); - 它只会写入一个文件
.git/hooks/pre-commit,该文件适用于项目的所有部分,且不会上传到 GitHub; - 检查后,仍可通过
git commit --no-verify提交; - 如何卸载。
最后提问:“可以在此项目中安装警报吗?” 并提供以下选项——是(现在安装;不会向互联网发送任何内容)、否(停止;不安装任何内容)、查看它会拒绝什么(在你决定前显示完整列表)——然后等待回复。
- 警报会拒绝什么:新增行中有效的 CPF 或 CNPJ;
-
安装仅限对上述问题回答“是”后:
bash "$SKILL_ROOT/scripts/alarme.sh" instalar。 用文字说明安装位置、版本、--no-verify以及卸载命令,不要粘贴命令输出。 -
提交被拒绝时,与对方一起阅读提示:哪个文件、哪一行、发现了什么(数字会被遮盖)。根据提示提出修正方法(
git restore --staged、.gitignore、替换为虚构数据),并询问**“我们如何处理这个文件?”,提供以下选项——修正(将文件从此版本中移除,或将其加入排除列表)、虚构数据(将数字替换为无效数字并保存)、仍然提交(你已检查并确认数据是虚构的或已获授权:仅此次提交时绕过警报并保存)。绝不要自行运行git commit --no-verify:只有对方选择仍然提交**,并明确表示已检查且希望提交该次更改时才运行。 -
卸载在对方提出要求时执行:
bash "$SKILL_ROOT/scripts/alarme.sh" desinstalar。脚本只会移除此技能的警报;如果文件来自其他来源,则会拒绝操作,不作更改。
验证与质量检查清单
- 在任何
instalar操作前运行了verificar。 - 按第 2 步的问题征求了同意,并得到肯定答复。
- 没有覆盖其他警报,也没有修改
core.hooksPath。 - 报告提交被拒绝时,没有在对话中写出完整的 CPF/CNPJ。
- 未在对方要求对该次提交执行此操作前使用
--no-verify。 - 已说明如何卸载。
自动化测试(供维护此技能的人使用,不供学员使用):
python3 -B -m unittest discover -s "$SKILL_ROOT/tests" -p "test_*.py"。
异常处理
- **不在 git 仓库中:**脚本以代码 1 退出并说明原因;指导对方在项目文件夹中打开终端(如果项目尚无 git,则运行
git init)。 - **已存在其他警报:**代码 2;不要安装;显示需要手动添加的那一行。
- 警报报告的数字不是 CPF/CNPJ(例如,一个 11 位数的电话号码恰好通过校验,概率约为 1/100):说明这可能只是巧合;对方检查后,如确认无误,可在该次提交中使用
--no-verify。 - 合法的示例电子表格(虚构数据,不含客户数据):处理方式相同——检查后使用
--no-verify。 - UTF-16 文件(某些 Excel 的“Unicode 文本”文件):git 会将其视为二进制文件,警报无法读取其内容;如果它是新电子表格,仍会根据文件名识别。
- **字母数字形式的 CNPJ:**此版本无法识别。
示例
正面示例(合成)。 用户:“我想防止客户数据进入这个项目的 Git。”
运行 verificar →“未安装警报”。用四项说明,并询问“我可以在这个项目中安装警报吗?”。用户:“可以。”运行 instalar,并告知路径、版本、--no-verify 以及如何卸载。
提交被拒绝(合成)。 警报显示 clientes.csv: planilha nova 和
notas.md:12: CPF 123.***.***-09。建议运行 git restore --staged "clientes.csv",将其添加到
.gitignore,并将第 12 行替换为虚构的 CPF。不要运行 --no-verify。
反例。 项目使用 husky(core.hooksPath = .husky/_)。verificar 返回代码 2。
不要安装;显示应添加到 .husky/pre-commit 的那一行,然后停止。
不在范围内。“A1 证书已经提交到 GitHub 了,帮我从历史记录中删除。”使用下面的拒绝文本回复,并指出有效的保护措施是联系证书颁发机构吊销证书并重新签发——删除历史记录无法撤销已经生成的副本。
标准拒绝文本
- “此 skill 用于安装和说明提交警报;不会修改 Git 历史记录。命令如下,由你决定是否运行:……”
- “吊销证书或更改密码需要由你在颁发方或服务中操作;此 skill 不会代为处理。”
- “本次对话没有终端,因此我无法安装或检查警报。请在 Claude Code 或 Codex 中,从项目文件夹内运行此 skill。”
- “我还没有得到你安装的许可。可以在这个项目中安装警报吗?”
确定性脚本
scripts/alarme.sh—verificar(只读)、instalar、desinstalar。绝不会覆盖其他来源的警报。退出代码:0 表示已完成/提供信息,2 表示因存在其他警报而拒绝,1 表示不在仓库中。scripts/pre-commit.sh— 警报本身;这是复制到.git/hooks/pre-commit并带有标记和版本号的源文件。仅使用 bash、git 和 awk。
Bundle 清单
SKILL.md— 本操作流程。scripts/alarme.sh、scripts/pre-commit.sh— 见上文。tests/test_alarme.py— 检测和安装测试(运行时生成 CPF/CNPJ)。references/COMO_FUNCIONA.md— 面向决定是否使用者的说明。references/RUNTIME_COMPATIBILITY.md— 说明适用和不适用的环境。references/ESCOPO_CONFIRMADO.md— 此版本已获批准的范围。evals/cases.json— 用于在 Agent 中运行的行为场景。manifest.json、CHANGELOG.md、agents/openai.yaml。
方法论与作者
此 skill 根据 Roberto Dias Duarte 的方法论构建。
SDD Starter by RDD 的一部分 — https://github.com/robertodiasduarte/sdd-starter