CommunityRecherche & Datenanalysegithub.com

grahama1970/anonymize-data

Anonymisieren Sie unterstützte CSV-, JSON-, UTF-8-Text- und SQLite-Dateien mithilfe einer expliziten Richtlinie des oai-trial-Projekts. Nutzbar zum Anonymisieren von Daten, Pseudonymisieren von Exporten, Redigieren von Richtlinienliteralen oder zum Erkennen und expliziten Freigeben von Fuzzy-Namensaliasen. Das Skill ist eine schlanke CLI-/Docker-Schnittstelle, kein weiterer Motor.

Was ist anonymize-data?

Dieses Skill dient als dünne CLI-/Docker-Schnittstelle zum kanonischen `oai-trial`-Projekt, das die eigentliche Anonymisierungslogik implementiert. Es ermöglicht die Verarbeitung von CSV-, JSON-, UTF-8-Text- und SQLite-Dateien (einzelne Dateien oder Verzeichnisse) gegen eine explizite Datenschutzrichtlinie (`policy.json`). Die Kernfunktionen umfassen das Anonymisieren, Bündeln, Verifizieren und Inspizieren von Ausgaben sowie eine optionale RapidFuzz-basierte Erkennungsfunktion, die dem Bediener Namens-Kandidaten zur manuellen Freigabe vorschlägt. Das Skill stellt sicher, dass die vertraulichen Werte der Richtlinie (z. B. Namen, Telefonnummern) in allen Repräsentationen (z. B. als Ganzzahl in SQLite, Zeichenfolge im E.164-Format, Unicode-NFC/NFD) abgeglichen werden und nicht nur als Zeichenfolgen. Es setzt bewährte Praktiken wie spezifikationsbasierte Verifikation, deterministische Docker-Pfade und eine unabhängige Prüfung durch, die keine Annahmen mit der Transformation teilt. Fehler wie fehlende Übereinstimmungen werden geschlossen gemeldet, und Discovery-Ergebnisse werden niemals automatisch in die Anonymisierung übernommen. Das Skill ist für Entwickler und Agenten konzipiert, die eine zuverlässige und überprüfbare Pseudonymisierung oder PII-Redaktion in CI/CD- oder Datenexpositions-Workflows benötigen.

Funktioniert mit~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/grahama1970/agent-skills/tree/main/skills/anonymize-data

Installed? Explore more Recherche & Datenanalyse skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

In Ihrer bevorzugten KI fragen

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

Dokumentation

Daten anonymisieren

Betreiben Sie das kanonische oai-trial-Projekt. Duplizieren Sie nicht dessen Matcher, Formatadapter, Verifizierer, Schemata oder Fehlerbehandlung in diesem Skill. Die vorhandene argparse-CLI des Projekts wird absichtlich beibehalten; dieser Wrapper fügt keine Python-CLI oder -Dienst hinzu.

Einrichtung und Hauptbetrieb

ANONYMIZE_DATA_ROOT überschreibt den standardmäßigen primären Checkout oben. Die Einrichtung benötigt uv und installiert die deklarierten Entwicklungs-/Discovery-Erweiterungen des Projekts. Laufzeitoperationen benötigen keinen Speicher, keine Anbieteranmeldeinformationen, kein LLM, kein Netzwerk oder Datenbankdienst.

./run.sh setup
./run.sh --input /data/exports --policy /data/policy.json --output /data/release
./run.sh anonymize --input /data/export.sqlite --policy /data/policy.json --output /data/release

Die Eingabe ist eine .csv-, .json-, .txt- oder .sqlite-Datei oder ein Verzeichnis mit diesen Dateien. Die Richtlinie muss eine separate reguläre Datei sein. Verwenden Sie ein dediziertes leeres Ausgabeverzeichnis außerhalb der Eingaben. Originale werden in einen privaten temporären Schnappschuss kopiert; eine erfolgreiche Ausgabe enthält nur corpus/ und report.json.

Die vorhandene Bündelschnittstelle bleibt verfügbar:

./run.sh run --input /data/bundle --output /data/release
./run.sh verify --input /data/bundle --output /data/release
./run.sh inspect /data/release

Ein Bündel enthält policy.json und corpus/. Die Richtlinie, kanonische Identität, Regeln für geschützte Werte, typisierte Fehler und das Berichtsschema gehören dem Projekt. Lesen Sie dessen README.md, docs/ANONYMIZATION_SEMANTICS.md und schemas/report.schema.json, wenn Sie diese interpretieren. Deklarieren Sie keinen Erfolg allein aus einem Exit-Code: Lesen Sie den tatsächlichen Bericht, validieren Sie seine Bereitschaftsfelder und überprüfen Sie die Ausgabe auf das angeforderte Format. Beschädigte oder fehlende Berichte sind nicht BEREIT.

Optionale RapidFuzz-Erkennung: niemals automatischer Ersatz

./run.sh discover --input /data/exports --policy /data/policy.json --output /data/work/review.json
./run.sh approve-discovery --input /data/exports --policy /data/policy.json \
  --review /data/work/review.json --approve CANDIDATE_ID --output /data/work/approved-policy.json
./run.sh --input /data/exports --policy /data/work/approved-policy.json --output /data/release

Die Erkennung vergleicht ganze strukturierte Zeichenfolgenwerte und ganze Textzeilen mit Richtlinieneinträgen vom Typ name. Es handelt sich nicht um NLP-Spanextraktion oder einen allgemeinen PII-Scanner. Standardwerte: Ähnlichkeitsschwelle 90, Abstandsrand 5; konfigurierbar mit --threshold und --margin. Gleichstände, nahe Gleichstände, geschützte Werte, Werte, die Ziffern oder Identifikationszeichensetzung wie @, /, _ enthalten, sowie bereits bekannte Literale werden nicht vorgeschlagen. Apostrophe, Bindestriche und Punkte sind in namensförmigem Text erlaubt; Ähnlichkeit ist niemals ein Beweis, dass zwei Personen eins sind.

Bitten Sie den Bediener, bestimmte Kandidaten-IDs zu genehmigen. Genehmigen Sie niemals allein aufgrund des Ähnlichkeitswerts. Die Genehmigung leitet die Vorschläge gegen die aktuelle Richtlinie/den aktuellen Korpus neu ab, lehnt veraltete/bearbeitete Überprüfungen ab und erstellt eine exakte Übereinstimmungsrichtlinie. Nicht genehmigte Vorschläge beeinflussen die Anonymisierung niemals. release_ready: false ist bei Erkennungs-/Genehmigungsbelegen zwingend erforderlich.

Überprüfungs- und genehmigte Richtliniendateien enthalten Rohdaten-Namen: Halten Sie sie außerhalb von Veröffentlichungen, Protokollen und gemeinsam genutzten Berichten. Sie werden im Modus 0600 erstellt und überschreiben niemals eine vorhandene Datei. Temporäre Schnappschüsse standardmäßig auf dem Artefaktlaufwerk; überschreiben Sie mit ANONYMIZE_DATA_WORK_DIR, falls erforderlich.

Docker bleibt die eigenständige Schnittstelle

Ab dem Projekt-Checkout:

docker build -t anonymization-trial .
docker run --rm anonymization-trial
# Optionales, erkennungsfähiges Image; das Standard-Image hält die exakte Engine abhängigkeitsfrei.
docker build --build-arg INCLUDE_DISCOVERY=1 -t anonymization-trial:discovery .

Mounten Sie nur die angeforderte Eingabe/Richtlinie schreibgeschützt und ein dediziertes Ausgabeverzeichnis. Die gleiche Projekt-CLI wird im Image ausgeführt; der Evaluator benötigt dieses Skill nicht. Siehe das docs/DISCOVERY.md des Projekts für vollständige Befehlsbeispiele mit Mounts.

Fehler- und Nachweisgrenze

Der Wrapper bewahrt die Exit-Codes und bereinigten Fehlercodes des Projekts. Fehlerhaftes Projekt/Setup und falsche installierte Paketpfade schlagen vor der Verarbeitung fehl. Verwenden Sie --help für den tatsächlichen Argumentvertrag. Die Erkennung ist Überprüfungsmaterial, keine Veröffentlichung, Anonymitätsgarantie, Konfidenzwahrscheinlichkeit oder menschliche Autorisierung.

./sanity.sh führt echte positive, negative und adversarielle CLI-Prüfungen durch. Das beibehaltene fixtures/agentic_eval.json wiederholt diese und erfordert ein Zurücklesen der Artefakte. Eine vorherige Testqualifikation qualifiziert diese nachträglichen Erweiterungen nicht automatisch.

Darstellungsregel (Operator 2026-09-11)

PII muss gegen den Wert abgeglichen werden, nicht gegen die Zeichenfolge: Bevor ein JSON-/SQL-Skalar unverändert durchgereicht wird, stringifizieren Sie ihn kanonisch (telefonförmige Zahlen im E.164-Format) und führen Sie den Richtlinienabgleich auf der stringifizierten Form durch. Fixtures müssen jede PII-Klasse in jedem JSON- Skalartyp enthalten. Eine als ganze Zahl gespeicherte Telefonnummer ist dieselbe Telefonnummer, auch wenn die Richtlinie sie als formatierte Zeichenfolge wie 555-123-4567 schreibt und der Korpus 5551234567 speichert. Anfangsnullen oder präzisionsverlustbehaftete numerische Konvertierungen von Gleitkommazahlen müssen fehlschlagen, es sei denn, eine typspezifische kanonische Regel beweist eine sichere Äquivalenz. Siehe $best-practices-skills "Wertdarstellungsmatrix".

Härtungslektionen (lernen Sie diese nicht auf die harte Tour neu)

Der Test wurde disqualifiziert, weil eine als JSON-/SQLite-Ganzzahl gespeicherte Telefonnummer durch den reine-Zeichenfolgen-Matcher gelangte. Die Ursache war ein Prozessfehler: die Akzeptanzprüfung wurde auf der Grundlage dessen erstellt, was der Code tat, nicht abgeleitet von der gelieferten Spezifikation. Diese Regeln existieren, damit diese Art von Fehlern nicht erneut auftreten kann.

  1. Leiten Sie die Prüfung aus der Spezifikation ab, nicht aus dem Code. policy.json listet die exakten vertraulichen Werte auf. Die korrekte Akzeptanzprüfung ist „keiner dieser Werte erscheint in der dekodierten Ausgabe, in keiner Darstellung" — lesen Sie die Werte aus der Richtliniendatei, niemals aus einer manuell erstellten Liste. Beweisen Sie, dass die Prüfung von der Spezifikation abhängt, mit einem Abhängigkeitstest (ändern Sie einen Richtlinienwert → das Ergebnis muss sich ändern). Referenzimplementierung: scripts/spec_derived_check.py des Projekts, eingebunden in scripts/verify.sh.

  2. Der unabhängige Verifizierer darf keine Annahme mit der Transformation teilen. Der ursprüngliche Verifizierer hatte dieselbe reine-Zeichenfolgen-Blin​d​stelle wie der Produzent, sodass nichts fehlschlug. Das Verifikationsorakel muss darstellungsbewusst und unabhängig sein: JSON parsen (\uXXXX dekodieren), numerische Skalare auf ganzzahlige/dezimale Formen erweitern, beide Seiten NFC/NFD-normalisieren, SQLite-Tabellen+View-Zellen UND sqlite_master-DDL UND jeden Header- Ganzzahlwert scannen und die gesamte freigegebene Grenze einschließlich report.json scannen — nicht nur corpus/.

  3. Die vollständige Darstellungsklasse ist eine Checkliste, kein einzelner Fehler. Jede dieser kann einen vertraulichen Wert an einem naiven Matcher vorbeitragen; das Projekt behebt und behält eine Wächterfunktion für jede bei: typisierte numerische Skalare (int/float, wissenschaftliche Notation), SQLite BLOB (fail-closed), Unicode NFC/NFD, View- Rekonstruktion, Freelist-Residuen, feindliche DB-Schemata (Ausdrucks-/Teil- Indizes, nichtdeterministische Views, berechnete DEFAULTs), Schema-DDL-Literale und persistente Header-Ganzzahlen. Siehe docs/SECURITY_REMEDIATION.md des Projekts für die vollständige Tabelle.

  4. Beweisen Sie es über den echten Docker-Pfad, deterministisch. Verifikation muss ein festgeschriebenes Skript sein, das das Image erstellt, die genauen Befehle der Anweisung ausführt und die freigegebenen Bytes mit harten PASS/FAIL-Exits zurückliest — kein Agententext. Referenz: security/docker_brief_contract.py (Erstellung + beide Befehle der Anweisung

    • darstellungsbewusster Leck-Scan + Eingabevorbedingung) und security/docker_hardening_matrix.py (adversarielle Löcher durch docker run). Notieren Sie den Git-Commit und die erstellte Image-ID.
  5. Umfang ehrlich angeben. Deterministische Pseudonyme aus öffentlichen Namensräumen legen Gleichheit/Häufigkeit offen und bieten keinen Widerstand gegen externe Verknüpfungen; der Ausführungsbericht gibt dies in key_mode und does_not_establish an. Ein Richtlinienwert gleich einer obligatorischen SQLite-Formatkonstante ist eine degenerierte Eingabe, keine echte PII; die Pipeline schlägt darauf fehl, und dieser Rückstand wird als eingegrenzt dokumentiert.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

grahama1970/acceptance-contract

Turn a client brief, zip bundle, directory, or single requirements file into a typed acceptance-contract bundle with extracted requirements, acceptance checks, open questions, an immutable-goal draft, and a create-report-backed decision report. Use when users say acceptance contract, brief to requirements, freeze the goal, create immutable goal, amend immutable goal, build a Battle requirements bundle, or extract requirements from this bundle.

grahama1970/agent-ecosystem

Canonical map and shared contracts for the agent-governance ecosystem: the pi.receipt_envelope.v1 boundary envelope, the component graph, and the rules for which component owns which schema. Use when wiring a skill or extension into the shared receipt world, when asking how shame, triage-error, tau, ask, project-watchdog, ops-herdr, ponytail, and Memory fit together, or when validating an envelope.

grahama1970/agentic-evals

Agentic evaluation of skills using multi-trial fixtures, deterministic command assertions, trajectory checks, safety constraints, and evidence-backed readiness scoring. Use when users ask for agentic evals, multi-trial skill evaluation, skill trajectory validation, or readiness scoring for a skill workflow.

grahama1970/agent-inbox

File-based inter-agent messaging with headless dispatch. Check inbox, send bugs/requests to other projects, automatically spawn headless agents to fix bugs, and track progress via task-monitor.

grahama1970/agents-registry

Generate and query the centralized agent identity registry. Scans .pi/agents/*/AGENTS.md, parses frontmatter, outputs agents-registry.json and optionally syncs to /memory for semantic search.

grahama1970/agent-status

Artifact-driven status surfaces for long-running project-agent work. Maintains status.json, events.jsonl, proof manifests, and a stale-aware STATUS.html so humans can tell where the agent is, what passed, what is still unproven, and what decision or action is next — without dashboard theater.

grahama1970/align

Round-based context alignment before execution. Use when the human, project agent, WebGPT, scillm, ask, dogpile, memory, or project-knowledge may each hold different facts about a task; especially before ambiguous design, infographic, product workflow, high-stakes implementation, plan-iterate, project-infographic, or multi-review work.

grahama1970/analytics

Flexible data science analytics for any dataset. Auto-discovers schema, recommends charts, exports to create-figure. Works with JSONL, JSON, CSV from any source.

grahama1970/analyze-chatterbox-emotions

Evaluate generated Chatterbox voice files as voice-quality artifacts: affect match, arousal/valence proxies, pause placement, intelligibility inputs, clipping, loudness, and discontinuity flags. Use when reviewing Chatterbox emotional tags, pauses, Turbo/base affect delivery, Persona Dream utterance renders, or whether generated speech matches an intended product-facing affect.

grahama1970/analyze-elf

Reverse-engineer features from ELF binaries. Extracts CLI commands, state machines, protocols, Zod schemas, and data models. Automatically generates a /create-walkthrough prosecution brief with Mermaid diagrams. Uses /treesitter for AST analysis of bundled JS/TS source.

grahama1970/animation-vocabulary

Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term ("the bouncy thing when a popover opens" → Pop in; "the iOS rubber-band scroll" → Rubber-banding). Use when the user asks "what's it called when…", or describes a motion effect without knowing its name and wants the right word to prompt an AI or designer with. For naming an effect, not designing or building one.

grahama1970/anvil

Heavy-duty "No-Vibes" debugging and hardening orchestrator. Use this for complex, stubborn bugs where `review-code` has failed, or for "Red Teaming" (hardening) a codebase. Runs multiple agents in parallel (Thunderdome) using git worktree isolation.

grahama1970/apple-design

Apple's approach to interface design and fluid, physical motion, translated for the web. Use when building or reviewing gesture-driven UI, spring animations, drag/swipe/sheet interactions, momentum and interruptible transitions, translucent materials and depth, typography (optical sizing, tracking, leading), reduced-motion, or the design foundations (feedback, spatial consistency, restraint) behind Apple-style interfaces.

grahama1970/argue

Multi-persona structured debate orchestrator. Personas research via /dogpile, consult colleagues via /ask, and argue toward nuanced synthesis on complex questions.

grahama1970/arxiv

Search arXiv for papers and extract knowledge into memory. Use `search` to find papers, `learn` to extract knowledge.

grahama1970/ask

Use when the user asks to query project memory, ask an oracle, use supported browser-backed reviewers, run Tau roundtable/single-handler workflows, ask Pi-native subagents from within Pi, run persona/deep-review workflows, generate image prompts, check OS/project health through composed skills, or run an ask DAG. This skill is the executable /ask runtime; do not replace it with an informal subagent, plain web search, or hand-written review; inside Pi, explicit Pi-native subagent targets are routed through the pi-subagents tool as an Ask target type.

grahama1970/assess

Step back and critically reassess project state. Use when asked to "assess", "step back", "fresh eyes", "check alignment", "sanity check", "health check", "prune documentation", or "evaluate what's working". Offers documentation pruning and doc-code alignment analysis. Offer to run after major changes (don't auto-run).

grahama1970/assistant

Shared GPT + classifier inference gateway for persona monitor tasks. Routes validation and classification through a 4-tier cascade: heuristic → classifier → local GPT → scillm.

grahama1970/assistant-lab

Self-improvement workbench for /assistant. All the tools needed to diagnose, train, evaluate, and promote models in a continuous loop. The "warm pond" where /assistant evolves its own inference stack.

grahama1970/batch-quality

Pre-flight validation and quality gates for batch LLM operations. ACTUALLY tests samples through LLM before burning tokens. Uses SPARTA contracts for DuckDB validation queries. Integrates with task-monitor for enforced quality gates.

Verwandte Skills