mcpField
S
sdd-higiene-dado

sdd-higiene-dado

github.com/robertodiasduarteセキュリティ1103 回インストール3 日前に更新
リポジトリ

sdd-higiene-dado について

sdd-higiene-dado は、Git プロジェクトで顧客データを扱う人向けのエージェントスキルです。コミット時に特定の機密データをブロックするアラームの確認、導入、説明、削除を案内し、導入には明示的な同意を求めます。

主な機能

  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/)。プロジェクトフォルダーから実行します。

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 の担当です。

ターミナルを使えない場合(claude.ai または Web 版 ChatGPT)、このスキルではインストールも確認もできません。その旨を一文で伝え、プロジェクトフォルダー内から Claude Code または Codex でこのスキルを実行するよう案内してください。アラームの内容を手動で貼り付けるよう、ユーザーに渡してはいけません。

学習者への伝え方

このスキルを使う人は、たいてい git を使ったことがありません。各回答は技術レポートではなく、説明を添えた一つのステップです。

3つのステップは、常に次の名前を使います(およびフロー外の対応が2つあります)。

ステップ学習者向けの名前このスキルの手順
1確認手順1(読み取りのみ)
2説明手順2
3インストール手順3
—コミット拒否手順4(アラームがバージョンを拒否した場合)
—アンインストール手順5(依頼された場合)

すべての回答は、次の順序で次の要素を含めます(内容がない要素は省略します)。

  1. ステータス — 1行:✅ 1 確認 · ▶️ 2 説明 · ⬜ 3 インストール(✅ 完了 — 訪問しただけではありません;▶️ 現在のステップ;⬜ 未着手;⏸️ 停止;➖ スキップ)。フロー外の場合:▶️ コミット拒否 または ▶️ アンインストール。ステップに戻る場合は、理由を 現在の状況 に記載します。
  2. 実施したこと — 前のステップの結果を、コマンド出力を含めず短い文で説明します。学習者の選択を記録します:「あなたははいを選びました。アラームをインストールしました……」。
  3. 現在の状況:ステップ N — 名前 — このステップで何をするのか、その理由を、ターミナルを見たことがない人にもわかるように2~4文で説明します。何かを書き込む場合は、番号付きの手順で何をするのか、何が起こらないのか(インターネットには何も送信されません。変更されるのは git のファイル1つだけで、ご自身のファイルは変更されません)を伝えます。時間のかかる処理(verificar のスキャンなど)の前には、何を実行するか、学習者は返信する必要がないことを1文で伝えます。
  4. 選択してください — 太字の質問と、それぞれ実行するとどうなるかを添えた選択肢。このスキルで使う質問は、「このプロジェクトにアラームをインストールしてもよいですか?」(手順2)と 「このファイルをどうしますか?」(手順4)です。自由回答の質問(どのファイルか、どの行か)が必要な場合は、どう答えればよいか、「わからない」という回答も含めて説明します。複数の質問をまとめる場合は番号を付けます。どの選択肢にも当てはまらない返答(質問や「たぶん、はい」など)があったら、その疑問に答えて選択肢をもう一度提示します。
  5. 次のステップ — 回答後に何が起こるかを1行で説明します。

表現に関するルール:

  • 1回の回答につき1ステップです。選択を求めたところで止めてください。次のステップを続けてはいけません。
  • 技術用語は、最初に出てくるとき、必ず説明を添えます。ステータスにある用語も対象です。
    • 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 個」と記載します。検出された番号は必ずマスキングします。学習者が実行する必要がある場合に限ってコマンドを示し、番号付きの手順で、1ステップにつきコマンド1つを記載し、画面に何が表示されるかを説明します。
  • このスキルや別のスキルの指示について、引用したり要約したりしてはいけません(「このスキルでは必須です……」「手順2に従って……」など)。学習者にとっての理由を伝えてください:「CPF を GitHub に送信してしまうと取り消せないため、事前にアラームで確認します」。
  • 停止時にも手順を示します。 git リポジトリの外にいる場合、または別のアラームがすでにインストールされている場合は、ステータスを ⏸️ にし、理由を1文で説明します。操作する場所(ターミナル、フォルダー)と番号付きの手順を、各手順で何が起こるかとともに示します。実施していないこと(「何もインストールしていません」)を伝え、学習者が次に何かをする必要がある場合は、「終わったら、もう一度依頼してください。ここから続けます」と伝えます。

手順

  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 というファイルを 1 つだけ書き込みます。このファイルはプロジェクト内のすべての作業に適用され、 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 桁の電話番号。約 100 件に 1 件):「偶然一致する場合があります」と説明します。本人に確認してもらい、該当する場合は、そのコミットで --no-verify を使います。
  • 正当なサンプルスプレッドシート(架空のデータで、顧客データを含まないもの):同じ方法で確認し、--no-verify を使います。
  • UTF-16 のファイル(Excel の一部の「Unicode テキスト」など):Git はファイルをバイナリとして扱うため、アラームは内容を読み取りません。ただし、新しいスプレッドシートならファイル名で検出されます。
  • 英数字の CNPJ: このバージョンでは認識されません。

使用例

肯定的な例(合成データ)。 利用者:「このプロジェクトに、顧客データが Git に入るのを防ぐ仕組みを導入したいです」。 verificar を実行 → 「アラームはインストールされていません」。4項目で説明し、「このプロジェクトにアラームをインストールしてもよいですか?」と確認します。利用者:「はい」。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 にアップロードしてしまいました。履歴から削除してください」。以下の拒否文を返し、保護するには認証局で証明書を失効させて別の証明書を発行する必要があることを伝えます。履歴を削除しても、すでに作成されたコピーは取り消せません。

拒否の定型文

  • 「このスキルはコミットアラームをインストールして説明しますが、git の履歴は変更しません。コマンドはこちらです。実行するかどうかはご自身で判断してください:…」
  • 「証明書の失効やパスワードの変更は、発行元またはサービス上でご自身が行ってください。このスキルでは対応しません。」
  • 「この会話にはターミナルがないため、アラームをインストールしたり確認したりできません。プロジェクトフォルダー内から Claude Code または Codex でこのスキルを実行してください。」
  • 「インストールの許可をいただいていません。このプロジェクトにアラームをインストールしてもよいですか?」

決定論的スクリプト

  • scripts/alarme.sh — verificar(読み取りのみ)、instalar、desinstalar。別の場所から設定されたアラームは上書きしません。終了コード:0 は実行完了/情報、2 は別のアラームがあるため拒否、1 はリポジトリ外。
  • scripts/pre-commit.sh — アラーム本体です。マーカーとバージョンを付けて .git/hooks/pre-commit にコピーされるソースです。bash、git、awk のみを使用します。

バンドルの目録

  • 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 — エージェントで実行する動作シナリオ。
  • manifest.json、CHANGELOG.md、agents/openai.yaml。

方法論と著作者

このスキルは Roberto Dias Duarte の方法論に基づいて構築されました。


SDD Starter by RDD の一部 — https://github.com/robertodiasduarte/sdd-starter

コメント