CommunityPesquisa e Análise de Dadosgithub.com

anonymize-data

Anonimiza arquivos CSV, JSON, TXT UTF-8 e SQLite usando uma política explícita através do projeto oai-trial. Ideal para anonimizar dados, pseudonimizar exportações, aplicar redação de literais de política ou descobrir e aprovar explicitamente pseudônimos fuzzy de nomes. Esta skill é uma interface CLI/Docker enxuta, não um novo motor.

O que é anonymize-data?

Esta skill fornece uma interface de linha de comando e Docker para operar o projeto canônico `oai-trial` para anonimização de dados. Seu principal objetivo é permitir que desenvolvedores e operadores anonimizem, pseudonimizem ou apliquem redação a dados estruturados (CSV, JSON, SQLite) e texto UTF-8 com base em uma política JSON explícita. A skill não duplica a lógica de correspondência, adaptadores de formato ou esquemas do projeto subjacente; em vez disso, expõe comandos como `./run.sh anonymize`, `./run.sh discover` para descoberta fuzzy de nomes (nunca automática, sempre com aprovação explícita do operador) e `./run.sh verify` para verificação independente. A verificação é feita por scripts determinísticos que constroem a imagem Docker, executam os comandos exatos e escaneiam a saída (incluindo `report.json`, células SQLite, esquemas DDL e literais numéricos) para garantir que nenhum valor sensível vaze em qualquer representação. A skill impõe lições de hardening importantes: correspondência de valores (não apenas strings), verificador independente sem suposições compartilhadas com o transformador, e escopo honesto (pseudônimos públicos não oferecem resistência a linkage externo). Suporta ambientes onde `uv` e Docker estão disponíveis, sem necessidade de memória, credenciais de provedor, LLM ou rede.

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

Installed? Explore more Pesquisa e Análise de Dados skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Anonimizar dados

Opere o projeto canônico oai-trial. Não duplique seu correspondente, adaptadores de formato, verificador, esquemas ou tratamento de erros nesta skill. O CLI argparse existente do projeto é intencionalmente retido; este wrapper não adiciona nenhum CLI ou serviço Python.

Configuração e operação principal

ANONYMIZE_DATA_ROOT substitui o checkout padrão principal acima. A configuração precisa uv e instala as dependências de desenvolvimento/descoberta declaradas do projeto. As operações de execução não precisam de Memória, credenciais de provedor, LLM, rede ou serviço de banco de dados.

./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

A entrada é um arquivo .csv, .json, .txt ou .sqlite, ou um diretório contendo esses arquivos. A política deve ser um arquivo regular separado. Use um diretório de saída vazio dedicado fora das entradas. Os originais são copiados para um snapshot temporário privado; a saída bem-sucedida contém apenas corpus/ e report.json.

A interface de pacote existente permanece disponível:

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

Um pacote contém policy.json e corpus/. A política, identidade canônica, regras de valor protegido, falhas tipadas e esquema de relatório pertencem ao projeto. Leia seu README.md, docs/ANONYMIZATION_SEMANTICS.md e schemas/report.schema.json ao interpretá-los. Não declare sucesso apenas a partir de um código de saída: leia o relatório real, valide seus campos de prontidão e inspecione a saída para o formato solicitado. Relatórios corrompidos ou ausentes não estão PRONTOS.

Descoberta opcional com RapidFuzz: nunca substituição automática

./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

A descoberta compara valores inteiros de strings estruturadas e linhas de texto inteiras contra entradas de política do tipo name. Não é extração de spans de PLN ou um scanner geral de PII. Padrões: limite de similaridade 90, margem de separação 5; configurável com --threshold e --margin. Empates, quase empates, valores protegidos, valores contendo dígitos ou pontuação de identificador como @, /, _, e literais já conhecidos não são propostos. Apóstrofos, hífens e pontos são permitidos em texto com formato de nome; similaridade nunca é prova de que duas pessoas são uma.

Peça ao operador para aprovar IDs de candidatos específicos. Nunca aprove apenas com base na pontuação de similaridade. A aprovação re-deriva as propostas contra a política/corpus atual, rejeita revisões desatualizadas/editadas e compila uma política de correspondência exata. Propostas não aprovadas nunca afetam a anonimização. release_ready: false é obrigatório em comprovantes de descoberta/aprovação.

Arquivos de revisão e política aprovada contêm nomes brutos: mantenha-os fora de lançamentos, logs e relatórios compartilhados. Eles são criados com modo 0600 e nunca sobrescrevem um arquivo existente. Snapshots temporários padrão são no disco de artefatos; substitua com ANONYMIZE_DATA_WORK_DIR quando necessário.

Docker continua sendo a interface independente

A partir do checkout do projeto:

docker build -t anonymization-trial .
docker run --rm anonymization-trial
# Imagem opcional com descoberta habilitada; a imagem padrão mantém a dependência exata do motor livre.
docker build --build-arg INCLUDE_DISCOVERY=1 -t anonymization-trial:discovery .

Monte apenas a entrada/política solicitada como somente leitura e um diretório de saída dedicado. O mesmo CLI do projeto é executado dentro da imagem; o avaliador não precisa desta skill. Consulte docs/DISCOVERY.md do projeto para exemplos completos de comandos montados.

Limite de falha e prova

O wrapper preserva os códigos de saída do projeto e códigos de erro sanitizados. Projeto/instalação ausente e caminhos de pacotes instalados incorretos falham antes do processamento. Use --help para o contrato real de argumentos. A descoberta é material de revisão, não um lançamento, garantia de anonimato, probabilidade de confiança ou autorização humana.

./sanity.sh executa verificações reais positivas, negativas e adversárias de CLI. O arquivo retido fixtures/agentic_eval.json as repete e requer leitura de artefato. A qualificação prévia do teste não qualifica automaticamente essas extensões pós-teste.

Regra de representação (operador 2026-09-11)

PII deve ser correspondido contra o valor, não a string: antes de qualquer escalar JSON/SQLite ser passado inalterado, stringifique-o canonicamente (números com formato de telefone na forma E.164) e execute a correspondência da política na forma stringificada. As fixtures devem incluir cada classe de PII em cada tipo escalar JSON. Um número de telefone armazenado como inteiro é o mesmo número de telefone, inclusive quando a política o escreve como uma string formatada, como 555-123-4567, e o corpus armazena 5551234567. Conversões numéricas com perda de zero à esquerda ou precisão de ponto flutuante devem falhar fechadas, a menos que uma regra canônica específica de tipo prove equivalência segura. Consulte $best-practices-skills "Matriz de representação de valor".

Lições de hardening (não aprenda estas novamente da maneira difícil)

O teste foi desclassificado porque um telefone armazenado como inteiro JSON/SQLite passou pelo correspondente apenas de string. A causa raiz foi um erro de processo: a verificação de aceitação foi escrita a partir do que o código fazia, não derivada da especificação entregue. Estas regras existem para que essa classe de erro não possa se repetir.

  1. Derive a verificação da especificação, não do código. policy.json lista os valores sensíveis exatos. A verificação de aceitação correta é "nenhum desses valores aparece na saída decodificada, em qualquer representação" — leia os valores do arquivo de política, nunca de uma lista escrita manualmente. Prove que a verificação depende da especificação com uma sonda de dependência (altere um valor da política → o resultado deve alterar). Implementação de referência: scripts/spec_derived_check.py do projeto vinculado a scripts/verify.sh.

  2. O verificador independente não deve compartilhar nenhuma suposição com o transformador. O verificador original tinha o mesmo ponto cego de apenas string que o produtor, então nada falhou fechado. O oráculo de verificação deve ser ciente de representação e independente: analise JSON (decode \uXXXX), expanda escalares numéricos para formas inteiro/decimal, normalize NFC/NFD ambos os lados, escaneie células de tabelas+visões SQLite E DDL sqlite_master E cada inteiro de cabeçalho, e escaneie todo o limite lançado, incluindo report.json — não apenas corpus/.

  3. A classe completa de representação é uma lista de verificação, não um bug único. Cada uma dessas pode transportar um valor sensível além de um correspondente ingênuo; o projeto corrige e retém uma proteção para cada uma: escalares numéricos tipados (int/float, notação científica), BLOB SQLite (falha fechada), Unicode NFC/NFD, reconstrução de visão, resíduo de freelist, esquema de BD hostil (índices de expressão/parciais, visões não determinísticas, DEFAULTs computados), literais DDL de esquema, e inteiros de cabeçalho persistentes. Consulte docs/SECURITY_REMEDIATION.md do projeto para a tabela completa.

  4. Comprove através do caminho real do Docker, deterministicamente. A verificação deve ser um script comprometido que constrói a imagem, executa os comandos exatos do briefing, e lê os bytes liberados com saídas PASS/FAIL rígidas — não prosa de agente. Referência: security/docker_brief_contract.py (construção + ambos os comandos do briefing

    • varredura de vazamento ciente de representação + pré-condição de entrada) e security/docker_hardening_matrix.py (brechas adversárias através de docker run). Registre o commit git e o id da imagem construída.
  5. Escopo honesto. Pseudônimos determinísticos de namespace público revelam igualdade/frequência e não oferecem resistência a linkage externo; o relatório de execução declara isso em key_mode e does_not_establish. Um valor de política igual a uma constante de formato SQLite obrigatória é uma entrada degenerada, não PII real; o pipeline falha fechado nela e esse resíduo é documentado como escopo.

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.

Habilidades Relacionadas