themis · diff
v1.0.0 to v1.0.0
32 added, 0 removed. Audit A to A.
---
name: themis
description: "개인정보처리방침 생성 스킬 (테미스 — 법과 질서의 티타니스). 대상 프로젝트 코드에서 개인정보 수집·저장·전송·동의·삭제 지점을 file:line 근거로 전수 감사하고, 감사 결과만으로 국가별(한국 개인정보보호법 / 미국 CCPA·CPRA / EU GDPR) 방침 초안을 생성. 추측 금지 — 코드에 없는 항목은 지어내지 않고 [빈칸]+채움 안내. /themis로 실행. 테미스."
license: MIT
metadata:
version: "1.0.0"
---
# Themis — 코드 감사 기반 개인정보처리방침 생성 (테미스)
대상 프로젝트의 **실제 코드**에서 개인정보를 받거나·저장하거나·외부로 보내는 지점을 전수 감사하고,
**감사에서 확인된 사실만으로** 국가별 개인정보처리방침 초안을 생성합니다.
> 테미스는 정의의 저울을 든 티타니스 — 코드에 있는 것만 달아서 적고, 없는 것은 지어내지 않습니다.
## 적용 시점
- `/themis` 명시적 실행 (별칭: 테미스)
- "개인정보처리방침 만들어줘", "privacy policy 초안", "개인정보 수집 지점 찾아줘" 요청 시
- 앱스토어/플레이스토어 제출, 서비스 오픈, GDPR 대응 준비 시
## 핵심 원칙 (절대 규칙)
| # | 원칙 | 설명 |
|---|------|------|
| 1 | **추측 금지** | 모든 감사 항목에 file:line 근거. 코드에서 확인 못 하면 "확인 안 됨"으로 표기 |
| 2 | **지어내지 않기** | 코드에 없는 방침 항목은 `[빈칸: 무엇을 채워야 하는지]`로 남기고 채움 안내 제공 |
| 3 | **법적 판단 분리** | 법률 해석이 필요한 지점(위탁 vs 제3자 제공, 적용 대상 여부 등)은 `[확인 필요: 법률 검토]` 표시 |
| 4 | **법률 자문 아님** | 모든 산출물 서두에 "법률 자문이 아닌 초안, 시행 전 전문가 검토 권장" 고지 필수 |
---
## Step 1: 개인정보 전수 감사
프로젝트 전체를 5가지 질문으로 감사합니다. 규모가 크면 탐색 서브에이전트에 위임하되,
**file:line 근거 없는 항목은 버립니다.**
### 감사 5문항
1. **어떤 정보를 받는가** — 이메일, 이름, 전화번호, 사진, 위치, 접속기록, 대화/입력 내용, 세션 ID, 결제정보, 기기 식별자 등 전부
2. **어디에 저장하는가** — 로컬 파일/DB/클라우드, 정확한 경로·테이블
3. **받을 때 동의 절차가 있는가** — opt-in/opt-out, 동의 UI, 마스킹, 비활성화 플래그
4. **외부로 나가는 정보가 있는가** — 로그인 연동(OAuth), 통계 도구, 결제, AI API 호출, 푸시, 크래시 리포트
5. **지우는 기능이 있는가** — 회원 탈퇴 시 실제 삭제 여부, 보존 기한, 자동 파기
### grep 힌트 (시작점, 전부는 아님)
| 관점 | 패턴 |
|------|------|
| 수집 | `email`, `phone`, `birth`, `gender`, `address`, `geolocation`, `getCurrentPosition`, `camera`, `contacts`, `user_id`, `session` |
| 저장 | `INSERT INTO`, `localStorage`, `AsyncStorage`, `UserDefaults`, `SharedPreferences`, `S3`, `bucket`, ORM 모델(User/Member/Account/Profile) |
| 동의 | `consent`, `agree`, `terms`, `opt`, `gdpr`, `privacy` |
| 외부 전송 | `fetch`, `axios`, `requests.`, `http`, `analytics`, `gtag`, `ga4`, `firebase`, `posthog`, `sentry`, `mixpanel`, `amplitude`, `stripe`, `iamport`, `toss`, `oauth`, `openai`, `anthropic`, `googleapis`, `webhook` |
| 삭제 | `delete`, `withdraw`, `deactivate`, `purge`, `retention`, `TTL`, `soft_delete` |
### 놓치기 쉬운 함정 (반드시 점검)
- **soft delete**: 탈퇴 API가 flag만 바꾸고 실데이터를 남기는 경우 → "실제 삭제 아님"으로 기록
- **append-only 로그**: 로그/관찰 파일이 영구 누적되는지, 로테이션이 삭제인지 이동인지
- **언인스톨/탈퇴의 범위**: 설정만 지우고 데이터는 남기는지
- **마스킹 커버리지**: 마스킹·스크럽핑이 모든 저장 경로에 적용되는지, 일부 로그에는 빠지는지
- **자동 아웃바운드**: 사용자 액션 없이 나가는 요청(버전 체크, 텔레메트리, 크래시 리포트) — 요청 자체로 IP가 전달됨
- **git 노출**: 수집 데이터 디렉터리가 `.gitignore`에 있는지 + `git ls-files`로 실측 (설정만 믿지 않기)
### Step 1 산출물
5문항 구조의 표 + **"사용자가 예상 못 할 만한 수집" 별도 목록** (이 목록이 방침의 정직성을 결정합니다).
## Step 2: 감사 결과 확인 + 운영자 인터뷰
감사 표를 사용자에게 제시하고, **코드로 알 수 없는 것들**을 인터뷰로 수집합니다.
### 2-1. 감사 결과 확인
1. 누락되거나 잘못 파악된 항목이 있는지
2. **대상 국가**: 한국(기본) / 미국 / EU — 복수 선택 가능
### 2-2. 운영자 인터뷰 (코드로 알 수 없는 것만)
**규칙**: 감사에서 이미 확인된 것은 다시 묻지 않는다. 질문은 그룹으로 묶어 한 번에 제시한다
(AskUserQuestion 도구가 있으면 활용). 답을 받지 못한 항목만 `[빈칸]`으로 남기고 체크리스트에 등재한다.
**A. 신원·연락처**
| # | 질문 | 방침 매핑 |
|---|------|-----------|
| 1 | 프로그램/서비스 정식 명칭은? (README·package.json·레포명에서 후보를 찾아 제안) | 서두 |
| 2 | 운영 주체는? (개인 개발자 / 법인 — 법인이면 상호·주소) | 서두, EU Controller |
| 3 | 개인정보 보호책임자 성명·직책·연락처는? (한국판 필수) | 제7조 |
| 4 | 권리 행사(열람·정정·삭제) 접수 창구는? (이메일 / GitHub Issues / 문의 폼 — 오픈소스는 GitHub Issues 관행 제안) | 제6조 |
**B. 정책 결정**
| # | 질문 | 방침 매핑 |
|---|------|-----------|
| 5 | 보유 기간은? (탈퇴 시 즉시 파기 / N년 보관 후 파기 / 이용자가 삭제할 때까지) — 법정 의무 보존(전자상거래법 거래기록 5년 등) 해당 여부 포함 | 제2조 |
| 6 | 파기 방식은? (자동 파기 구현 여부 — 없으면 기능 구현을 선행 과제로 제안) | 제3조 |
| 7 | 시행일과 변경 고지 방법은? (README / 릴리즈 노트 / 공지사항) | 제9조 |
**C. 서비스 특성**
| # | 질문 | 방침 매핑 |
|---|------|-----------|
| 8 | 배포 형태는? (로컬 도구 / 웹 서비스 / 모바일 앱 / 데스크톱 앱) + 앱스토어·플레이스토어 제출 여부 (스토어는 방침 URL 필수) | 서두, 전체 구조 |
| 9 | 회원 체계가 있는가/생길 예정인가? (감사에서 못 찾았어도 로드맵 확인) | 제1조, 제6조 |
| 10 | 아동이 대상인가? — 한국: 만 14세 미만 법정대리인 동의(제22조의2), 미국: COPPA 13세, EU: Art. 8 (13~16세, 회원국별) | 아동 조항 |
| 11 | 서버/DB의 물리적 위치(국가)는? (클라우드면 리전) — 국외 이전 고지 판단 근거 | 제5조, EU Chapter V |
**D. 법적 특수사항**
| # | 질문 | 방침 매핑 |
|---|------|-----------|
| 12 | 민감정보(건강·생체·사상 등)를 다루는가/계획이 있는가? (한국 제23조, GDPR Art. 9 — 별도 동의·안전조치 필요) | 별도 조항 |
| 13 | 수집 정보를 마케팅·광고에 쓰는가/계획이 있는가? (별도 동의 필요, CCPA "판매/공유" 판단에 직결) | 제4조, US §4 |
| 14 | 쿠키/트래킹 도구를 쓰는가? (감사에서 못 찾았어도 GA·픽셀 등 운영 계획 확인) | 제8조 |
## Step 3: 국가별 초안 생성
`templates/`의 해당 템플릿을 기반으로, **감사 결과를 매핑**해 채웁니다.
| 국가 | 템플릿 | 기준 법제 | 필수 구조 |
|------|--------|-----------|-----------|
| 한국 | `templates/policy-ko.md` | 개인정보보호법 제30조 | 수집 항목·목적 / 보유 기간 / 파기 / 제3자 제공 / 처리 위탁 / 정보주체 권리 / 보호책임자 / 자동 수집 장치·거부 방법 |
| 미국 | `templates/policy-us.md` | CCPA/CPRA + FTC 관행 | 수집 카테고리 매핑(§1798.140) / 판매·공유 여부 / 소비자 권리 / 아동(COPPA) / 보존 / 보안 |
| EU | `templates/policy-eu.md` | GDPR Art. 13/14 | Controller / 법적 근거(Art. 6) / 국외 이전(Chapter V) / 정보주체 권리 / 보존 / 감독기구 진정권 |
+ ### 한국판: 공식 지침 준거 + 신선도 체크
+
+ 한국판의 정본은 개인정보보호위원회 **「개인정보 처리방침 작성지침」**입니다. 지침은 계속 개정되므로
+ 버전을 핀하고 실행 시점에 신선도를 확인합니다:
+
+ - **기준판**: 「개인정보 처리방침 작성지침(2025.4.)」 (2025-04-21 등록, [개인정보 포털 안내서](https://www.privacy.go.kr/front/bbs/bbsView.do?bbsNo=BBSMSTR_000000000049&bbscttNo=20806) · [개인정보위 원문](https://www.pipc.go.kr/np/cop/bbs/selectBoardArticle.do?bbsId=BS217&mCode=D010030000&nttId=11134))
+ - **신선도 체크 (실행 시)**: [개인정보 포털 안내서 게시판](https://www.privacy.go.kr/front/bbs/bbsList.do?bbsNo=BBSMSTR_000000000049)을 WebFetch해 기준판보다 새 개정판이 있는지 확인.
+ 더 새 판이 있으면 그 판을 따르고 **"기준판이 갱신되었다"고 사용자에게 고지**.
+ 웹 도구가 없는 환경이면 기준판으로 생성하되, 산출물에 "최신 지침 확인 권장 (기준판: 2025.4.)"을 표기
+ - **2025.4.판에서 구체화된 항목** (해당 시 반영): 행태정보의 수집·이용·제공 및 거부 안내,
+ 고충 처리 부서 연락처 기재, 정보주체 권리 행사 절차 구체화, 모바일 앱 공개 방식,
+ 아동 대상 서비스의 아동용 처리방침. 부록의 소상공인용·공공기관용 예시도 참조 대상
+ - 지침 PDF를 레포에 동봉하지 않는 이유: 라이선스(공공누리 유형) [확인 필요] + 개정 시 낡음 — 링크 참조가 정본
+
+ ### 조문 인용 검증 (선택 — 한국법령 MCP 연동)
+
+ 세션에 한국법령 MCP(법제처 국가법령정보센터 Open API 기반: `mcp-kr-legislation`,
+ `korean-law-mcp` 등)가 연결되어 있으면:
+
+ - 초안에 인용한 조문(제15조 수집, 제21조 파기, 제22조의2 아동, 제23조 민감정보, 제30조 처리방침 등)과
+ 고시(개인정보의 안전성 확보조치 기준 등)를 **원문 조회로 검증** 후 인용
+ - 미연결이면 조문 번호에 `[확인 필요]`를 유지하고, 체크리스트에 "법령 MCP 또는 국가법령정보센터에서
+ 조문 확인" 항목을 등재 (새 MCP를 만들지 않는다 — 기존 것 연동이 원칙)
+
### 채우기 규칙
- 감사에서 확인된 것 → 그대로 기술 (저장 경로·전송 목적지까지 구체적으로)
- 인터뷰(Step 2-2)에서 받은 답 → 해당 조항에 채움
- 둘 다 없는 것 → `[빈칸: ...]` + 부록 체크리스트에 등재
- 법률 해석 필요 → `[확인 필요: 법률 검토]` (예: AI API 전송이 위탁인지 제3자 제공인지 국외 이전인지)
- **서비스 유형 분기**: 로컬 도구(개발자가 데이터를 수신하지 않음)라면 그 사실을 서두에 명시 — 방침 전체의 성격이 달라짐 (EU판은 controller 해당 여부 자체가 쟁점)
- 산출물 언어: 한국판은 한국어, 미국/EU판은 영어 본문 + 한국어 체크리스트 부록 (요청 시 조정)
## Step 4: 산출물 저장 + 마무리
- 저장 위치: 대상 프로젝트의 `docs/privacy/privacy-policy-{ko,us,eu}-draft.md`
- 각 문서 끝에 **"확정 전 채워야 할 항목 체크리스트"** 표 필수 (빈칸 + 확인 필요 + 기능 구현 선행 항목 구분)
- 코드 개선이 필요한 항목(opt-out 플래그 없음, 자동 파기 없음, soft delete 등)은 **방침에 거짓말을 쓰는 대신 기능 구현을 선행 과제로 제안**
- 배포 준비가 되면 레포 루트 `PRIVACY.md` 승격 + README 링크를 안내
## 예시
```
사용자: /themis
테미스: (Step 1) 코드 전수 감사 → 수집/저장/동의/전송/삭제 표 + 예상 못 할 수집 목록 제시
사용자: "한국이랑 미국으로 만들어줘"
테미스: (Step 3) docs/privacy/privacy-policy-ko-draft.md + privacy-policy-us-draft.md 생성
+ 채움 체크리스트 (보유기간 정책 미정, 보호책임자 연락처 미정, soft delete 개선 제안)
```
## Related Files
| 파일 | 용도 |
|------|------|
| `skills/themis/SKILL.md` | 이 워크플로우 |
| `skills/themis/templates/policy-ko.md` | 한국 개인정보보호법 제30조 템플릿 |
| `skills/themis/templates/policy-us.md` | 미국 CCPA/CPRA 템플릿 |
| `skills/themis/templates/policy-eu.md` | EU GDPR Art. 13 템플릿 |
+
+ ## 외부 참조 (정본)
+
+ | 참조 | 용도 |
+ |------|------|
+ | [개인정보 처리방침 작성지침(2025.4.)](https://www.privacy.go.kr/front/bbs/bbsView.do?bbsNo=BBSMSTR_000000000049&bbscttNo=20806) | 한국판 구조·문구 정본 (기준판) |
+ | [개인정보 포털 안내서 게시판](https://www.privacy.go.kr/front/bbs/bbsList.do?bbsNo=BBSMSTR_000000000049) | 실행 시 신선도 체크 대상 |
+ | 한국법령 MCP ([mcp-kr-legislation](https://github.com/ChangooLee/mcp-kr-legislation), [korean-law-mcp](https://github.com/chrisryugj/korean-law-mcp) 등) | 조문·고시 인용 검증 (선택 연동) |
## 다른 스킬과의 관계
- **argos**(감리)와 다름: argos는 설계 산출물 대비 구현 검증, 테미스는 개인정보 관점 전수 감사 + 법정 문서 생성
- **clio**(문서 생성)와 다름: clio는 PRD·기술문서·매뉴얼, 테미스는 법정 고지 문서 전용
- **seo-audit**과 유사한 감사형 스킬이지만 도메인이 다름 (검색 최적화 vs 개인정보 컴플라이언스)