mcpField
S
sdd-higiene-dado

sdd-higiene-dado

github.com/robertodiasduarte安全1103 次安装3 天前更新
代码仓库

关于 sdd-higiene-dado

sdd-higiene-dado 是面向在 Git 项目中处理客户数据者的 Agent 技能。它引导用户检查、安装、说明和移除提交时的警报;安装前必须获得明确同意,警报会拦截指定敏感数据。

主要功能

  1. 01检查警报状态与版本
  2. 02经同意后安装或移除警报
  3. 03拦截新增行中的有效 CPF/CNPJ
  4. 04拦截密钥及新建电子表格
  5. 05说明并处理被拒绝的提交

适用场景

  1. 01提交保存前保护项目
  2. 02了解提交被拦截的原因
  3. 03从项目中移除该技能的警报

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/robertodiasduarte/sdd-starter --skill sdd-higiene-dado

安装后在 Claude Code 中输入/sdd-higiene-dado确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CHANGELOG.md
manifest.json
agents/
openai.yaml
evals/
cases.json
references/
COMO_FUNCIONA.md
ESCOPO_CONFIRMADO.md
RUNTIME_COMPATIBILITY.md
scripts/
alarme.sh
pre-commit.sh
tests/
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. 状态 — 一行:✅ 1 Verificar · ▶️ 2 Explicar · ⬜ 3 Instalar(✅ 已完成 — 不只是访问过;▶️ 当前步骤;⬜ 待处理;⏸️ 已暂停;➖ 已跳过)。流程外处理使用 ▶️ Commit recusado 或 ▶️ Desinstalar。返回某个步骤时,原因写在 现在 中。
  2. 已完成的操作 — 用简短句子说明上一步的结果,不要贴命令输出。记录学员的选择:"你选择了是:我安装了警报……"。
  3. 现在:步骤 N — 名称 — 用 2 到 4 句话说明此步骤要做什么以及原因,表达方式要适合从未见过终端的人。如果要写入任何内容,请按编号列出将要执行的操作,以及不会发生的事情(不会向互联网发送任何内容;不会修改你的任何文件 — 只会修改一个 git 文件)。执行耗时操作(例如 verificar 扫描)之前,用一句话说明将运行什么,且学员无需回复。
  4. 你的决定 — 用粗体提出问题,并列出选项及各自会发生的事情。此技能中的问题包括:"我可以在这个项目中安装警报吗?"(步骤 2)和 "我们如何处理这个文件?"(步骤 4)。如果需要开放式问题(询问哪个文件、哪一行),请说明如何作答,并提供“我不知道”这一选项;有多个问题时按编号列出。回答不符合任何选项(例如有疑问或回答“我觉得可以”)⇒ 解答疑问并重复列出选项。
  5. 下一步 — 用一行说明收到答复后会发生什么。

语言规则:

  • 每条回复只处理一个步骤。以提出决定结束并停下:不要接着进入下一步。
  • 技术词首次出现时必须附带解释 — 包括状态中的术语:
    • 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 仓库中,或已安装了其他警报:状态标为 ⏸️,用一句话说明原因,指出操作位置(终端、文件夹),按编号列出步骤并说明每一步会看到什么,说明没有做什么("没有安装任何内容。"),如果学员还需要操作,则说 "完成后请再找我 — 我会从这里继续。"

分步流程

  1. 检查。 运行 bash "$SKILL_ROOT/scripts/alarme.sh" verificar 并查看状态:

    • 未安装任何警报 — 继续第 2 步;
    • 已安装此技能的警报 — 告知已安装的版本;再次安装会更新;
    • 其他警报(husky、lefthook、core.hooksPath、手动编写的 pre-commit)— 不要安装。 显示脚本输出的内容,包括需要手动添加到现有警报中的那一行,然后停止。
  2. 说明并征求同意。 用几行话、不使用术语说明:

    • 警报会拒绝什么:新增行中有效的 CPF 或 CNPJ;.env(.env.example 和 .env.sample 除外);含有私钥的 .pfx、.p12 和 .pem;任何大小的新电子表格(.xlsx、.xls、.ods、 .csv);
    • 它只会写入一个文件 .git/hooks/pre-commit,该文件适用于项目的所有部分,且不会上传到 GitHub;
    • 检查后,仍可通过 git commit --no-verify 提交;
    • 如何卸载。

    最后提问:“可以在此项目中安装警报吗?” 并提供以下选项——是(现在安装;不会向互联网发送任何内容)、否(停止;不安装任何内容)、查看它会拒绝什么(在你决定前显示完整列表)——然后等待回复。

  3. 安装仅限对上述问题回答“是”后:bash "$SKILL_ROOT/scripts/alarme.sh" instalar。 用文字说明安装位置、版本、--no-verify 以及卸载命令,不要粘贴命令输出。

  4. 提交被拒绝时,与对方一起阅读提示:哪个文件、哪一行、发现了什么(数字会被遮盖)。根据提示提出修正方法(git restore --staged、.gitignore、替换为虚构数据),并询问**“我们如何处理这个文件?”,提供以下选项——修正(将文件从此版本中移除,或将其加入排除列表)、虚构数据(将数字替换为无效数字并保存)、仍然提交(你已检查并确认数据是虚构的或已获授权:仅此次提交时绕过警报并保存)。绝不要自行运行 git commit --no-verify:只有对方选择仍然提交**,并明确表示已检查且希望提交该次更改时才运行。

  5. 卸载在对方提出要求时执行: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

评论

支持 Markdown