Community연구 & 데이터 분석github.com

grahama1970/anonymize-data

지원되는 CSV, JSON, UTF-8 텍스트 및 SQLite 파일을 oai-trial 프로젝트를 통해 명시적 정책을 사용하여 익명화합니다. 데이터 익명화, 내보내기 가명처리, 정책 리터럴 편집, 또는 퍼지 이름 별칭을 발견하고 명시적으로 승인하는 데 사용합니다. 이 스킬은 얇은 CLI/Docker 인터페이스이며, 또 다른 엔진이 아닙니다.

anonymize-data란 무엇인가요?

이 스킬은 `oai-trial` 프로젝트를 기반으로 한 얇은 CLI/Docker 래퍼로, CSV, JSON, UTF-8 텍스트, SQLite 파일에 대한 데이터 익명화, 가명처리, 정책 기반 리터럴 편집 및 퍼지 이름 별칭 발견/승인 기능을 제공합니다. 정책 파일에 정의된 규칙에 따라 입력 파일을 처리하여 출력 디렉토리(보통 `corpus/`와 `report.json` 포함)에 결과를 생성합니다. `uv`를 통한 사전 설정이 필요하며, 실행 시 메모리, 제공자 자격 증명, LLM, 네트워크 또는 데이터베이스 서비스가 필요하지 않습니다. RapidFuzz 기반의 선택적 발견 기능(`discover` 및 `approve-discovery` 명령)을 통해 정책에 정의된 'name' 유형 항목과 유사한 전체 문자열 값을 제안하지만, 실제 대체는 오퍼레이터의 명시적 승인 후에만 이루어집니다. Docker 이미지로도 독립적으로 실행 가능하며, 프로젝트의 기존 argparse CLI를 그대로 유지합니다. 특히 '값'과 '문자열'의 차이에 주의하여 정책 매칭이 수행되며, 과거 실패 사례(예: 정수로 저장된 전화번호가 문자열만 검사하는 매처를 통과한 문제)를 바탕으로 강화된 검증 규칙이 적용됩니다. 실패 시에는 오류 코드를 보존하고, 검증 스크립트(`sanity.sh`)를 통해 실제 긍정, 부정 및 적대적 CLI 테스트를 실행합니다.

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

Installed? Explore more 연구 & 데이터 분석 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

데이터 익명화

정식 oai-trial 프로젝트를 운영합니다. 매처, 형식 어댑터, 검증기, 스키마, 오류 처리를 이 스킬에 중복으로 구현하지 마십시오. 프로젝트의 기존 argparse CLI는 의도적으로 유지됩니다. 이 래퍼는 Python CLI나 서비스를 추가하지 않습니다.

설정 및 기본 작동

ANONYMIZE_DATA_ROOT는 위 기본 체크아웃 디렉터리를 재정의합니다. 설정에는 uv가 필요하며, 프로젝트의 선언된 개발/발견 확장 기능을 설치합니다. 런타임 작업에는 메모리, 제공자 자격 증명, LLM, 네트워크 또는 데이터베이스 서비스가 필요하지 않습니다.

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

입력은 단일 .csv, .json, .txt 또는 .sqlite 파일이거나, 이러한 파일들이 있는 디렉터리입니다. 정책은 별도의 일반 파일이어야 합니다. 입력 외부에 있는 전용 빈 출력 디렉터리를 사용하십시오. 원본 파일은 개인 임시 스냅샷에 복사됩니다. 성공적인 출력에는 corpus/와 report.json만 포함됩니다.

기존 번들 인터페이스는 계속 사용할 수 있습니다:

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

번들에는 policy.json과 corpus/가 포함됩니다. 정책, 정식 식별자, 보호 값 규칙, 유형별 실패 및 보고서 스키마는 프로젝트가 소유합니다. 해석 시 프로젝트의 README.md, docs/ANONYMIZATION_SEMANTICS.md 및 schemas/report.schema.json을 읽으십시오. 종료 코드만으로 성공을 선언하지 마십시오. 실제 보고서를 읽고, 준비 상태 필드를 검증하며, 요청된 형식의 출력을 검사하십시오. 손상되었거나 누락된 보고서는 READY 상태가 아닙니다.

선택적 RapidFuzz 발견: 자동 대체 절대 금지

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

발견 기능은 전체 구조화된 문자열 값과 전체 텍스트 줄을 name 유형의 정책 항목과 비교합니다. 이는 NLP 범위 추출이나 일반 PII 스캐너가 아닙니다. 기본값: 유사도 임계값 90, 분리 여백 5. --threshold 및 --margin으로 구성 가능합니다. 동률, 근사 동률, 보호 값, @, /, _와 같은 식별자 구두점을 포함하는 값, 이미 알려진 리터럴은 제안되지 않습니다. 아포스트로피, 하이픈, 마침표는 이름 형태의 텍스트에서 허용되며, 유사성이 두 사람이 동일인임을 증명하지는 않습니다.

운영자에게 특정 후보 ID를 승인하도록 요청하십시오. 유사성 점수만으로 승인하지 마십시오. 승인은 현재 정책/코퍼스에 대해 제안을 다시 도출하고, 오래되었거나 편집된 리뷰를 거부하며, 정확히 일치하는 정책을 컴파일합니다. 승인되지 않은 제안은 익명화에 영향을 미치지 않습니다. 발견/승인 영수증에는 release_ready: false가 필수입니다.

리뷰 및 승인된 정책 파일에는 원시 이름이 포함되어 있습니다. 릴리스, 로그 및 공유 보고서 외부에 보관하십시오. 이 파일들은 모드 0600으로 생성되며 기존 파일을 덮어쓰지 않습니다. 임시 스냅샷은 기본적으로 아티팩트 드라이브에 저장되며, 필요시 ANONYMIZE_DATA_WORK_DIR로 재정의할 수 있습니다.

Docker는 독립형 인터페이스로 유지

프로젝트 체크아웃에서:

docker build -t anonymization-trial .
docker run --rm anonymization-trial
# 선택적 발견 활성화 이미지; 기본 이미지는 정확한 엔진 종속성을 없앱니다.
docker build --build-arg INCLUDE_DISCOVERY=1 -t anonymization-trial:discovery .

요청된 입력/정책은 읽기 전용으로 마운트하고, 전용 출력 디렉터리를 사용하십시오. 이미지 내부에서 동일한 프로젝트 CLI가 실행됩니다. 평가자는 이 스킬이 필요하지 않습니다. 완전한 마운트 명령 예제는 프로젝트의 docs/DISCOVERY.md를 참조하십시오.

실패 및 증명 경계

래퍼는 프로젝트 종료 코드와 정리된 오류 코드를 유지합니다. 프로젝트/설정 누락 및 잘못된 설치 패키지 경로는 처리 전에 실패합니다. 실제 인수 계약은 --help를 사용하십시오. 발견은 리뷰 자료이지, 릴리스, 익명성 보장, 신뢰도 확률 또는 인간 승인이 아닙니다.

./sanity.sh는 실제 긍정, 부정 및 적대적 CLI 검사를 실행합니다. 보존된 fixtures/agentic_eval.json은 이를 반복하며 아티팩트 재읽기를 요구합니다. 이전 평가 자격이 이 후 평가 확장에 자동으로 자격을 부여하지는 않습니다.

표현 규칙 (운영자 2026-09-11)

PII는 문자열이 아닌 값에 대해 매칭되어야 합니다. 모든 JSON/SQL 스칼라가 변경 없이 통과되기 전에, 정규 형식으로 문자열화(전화번호 모양의 숫자는 E.164 형식)하고 문자열화된 형식에 대해 정책 매칭을 실행하십시오. Fixture는 모든 JSON 스칼라 유형의 모든 PII 클래스를 포함해야 합니다. 정수로 저장된 전화번호는 동일한 전화번호이며, 정책이 555-123-4567과 같은 형식화된 문자열로 작성되고 코퍼스가 5551234567을 저장하는 경우에도 마찬가지입니다. 선행 0 또는 부동 소수점 정밀도 손실이 있는 숫자 변환은 유형별 정식 규칙이 안전한 동등성을 증명하지 않는 한 실패-폐쇄(fail closed)되어야 합니다. $best-practices-skills "값 표현 매트릭스"를 참조하십시오.

강화 교훈 (이런 어려운 방법으로 다시 배우지 마십시오)

해당 평가는 JSON/SQLite 정수로 저장된 전화가 문자열 전용 매처를 통과했기 때문에 실격 처리되었습니다. 근본 원인은 프로세스 오류였습니다. 승인 검사는 코드가 수행한 작업에서 작성되었으며, 전달된 사양에서 파생되지 않았습니다. 이러한 규칙은 그러한 유형의 실수가 재발하지 않도록 존재합니다.

  1. 코드가 아닌 사양에서 검사를 파생하십시오. policy.json은 정확한 민감한 값을 나열합니다. 올바른 승인 검사는 "해당 값 중 어느 것도 디코딩된 출력에 어떤 표현으로도 나타나지 않음"입니다. 정책 파일에서 값을 읽고, 수동으로 작성된 목록을 절대 사용하지 마십시오. 종속성 프로브(정책 값 변경 → 결과가 변경되어야 함)를 통해 검사가 사양에 의존함을 증명하십시오. 참조 구현: scripts/verify.sh에 연결된 프로젝트의 scripts/spec_derived_check.py.

  2. 독립 검증기는 변환과 가정을 공유해서는 안 됩니다. 원래 검증기는 생산자와 동일한 문자열 전용 사각지대를 가지고 있었기 때문에 아무것도 실패-폐쇄되지 않았습니다. 검증 오라클은 표현 인식 및 독립적이어야 합니다. JSON 구문 분석(\uXXXX 디코딩), 숫자 스칼라를 정수/소수 형식으로 확장, 양쪽 NFC/NFD 정규화, SQLite 테이블+뷰 셀 AND sqlite_master DDL AND 모든 헤더 정수 스캔, 그리고 corpus/뿐만 아니라 report.json을 포함한 전체 릴리스 경계를 스캔하십시오.

  3. 전체 표현 클래스는 체크리스트이지 단일 버그가 아닙니다. 다음 각각은 순진한 매처를 지나 민감한 값을 전달할 수 있습니다. 프로젝트는 모든 항목에 대한 가드를 수정하고 유지합니다. 유형 숫자 스칼라(int/float, 과학 표기법), SQLite BLOB(실패-폐쇄), 유니코드 NFC/NFD, 뷰 재구성, 프리리스트 잔여물, 적대적 DB 스키마(표현식/부분 인덱스, 비결정적 뷰, 계산된 DEFAULT), 스키마 DDL 리터럴, 영구 헤더 정수. 전체 테이블은 프로젝트의 docs/SECURITY_REMEDIATION.md를 참조하십시오.

  4. 실제 Docker 경로를 통해 결정론적으로 증명하십시오. 검증은 이미지를 빌드하고, 브리프의 정확한 명령을 실행하며, 에이전트 산문이 아닌 하드 PASS/FAIL 종료로 릴리스된 바이트를 다시 읽는 커밋된 스크립트여야 합니다. 참조: security/docker_brief_contract.py (빌드 + 두 브리프 명령 + 표현 인식 누출 검사 + 입력 사전 조건) 및 security/docker_hardening_matrix.py (docker run을 통한 적대적 구멍). Git 커밋과 빌드된 이미지 ID를 기록하십시오.

  5. 정직하게 범위를 설정하십시오. 결정론적 공개 네임스페이스 가명은 동등성/빈도를 공개하며 외부 연결 저항을 제공하지 않습니다. 실행 보고서는 key_mode 및 does_not_establish에 이를 명시합니다. 필수 SQLite 형식 상수와 동일한 정책 값은 실제 PII가 아닌 퇴화된 입력입니다. 파이프라인은 이에 대해 실패-폐쇄되며 해당 잔여물은 범위 내로 문서화됩니다.

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.

관련 스킬