gdpr-compliance
WebアプリケーションのGDPR(個人情報保護規則)対応を自動化し、Cookie同意管理、データ削除要求処理、個人情報監査、プライバシーポリシー生成などを効率的に行うSkill。
📜 元の英語説明(参考)
Automate GDPR and privacy compliance for web applications. Use when someone asks to "make the app GDPR compliant", "add cookie consent", "handle data deletion requests", "audit PII", "data subject access request", or "privacy policy generator". Covers PII auditing, consent management, data subject request endpoints, retention policies, and privacy policy generation.
🇯🇵 日本人クリエイター向け解説
WebアプリケーションのGDPR(個人情報保護規則)対応を自動化し、Cookie同意管理、データ削除要求処理、個人情報監査、プライバシーポリシー生成などを効率的に行うSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o gdpr-compliance.zip https://jpskill.com/download/14937.zip && unzip -o gdpr-compliance.zip && rm gdpr-compliance.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/14937.zip -OutFile "$d\gdpr-compliance.zip"; Expand-Archive "$d\gdpr-compliance.zip" -DestinationPath $d -Force; ri "$d\gdpr-compliance.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
gdpr-compliance.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
gdpr-complianceフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
GDPRコンプライアンス
概要
このスキルは、AIエージェントがウェブアプリケーション全体でGDPRコンプライアンスを実装するのを支援します。個人データがどこに存在するかの監査、同意管理の構築、データ主体要求(アクセス、削除、ポータビリティ)の処理、保持ポリシーの実施、ドキュメントの生成といった、ライフサイクル全体を網羅します。
指示
PII監査
- データベーススキーマ(Prisma、SQLマイグレーション、Sequelizeモデル、TypeORMエンティティ)からPIIフィールドをスキャンします。以下のパターンにフラグを立てます。
- 直接的な識別子:
email、name、full_name、phone、address、ssn - 間接的な識別子:
ip_address、device_id、geo_*、lat、lng、user_agent - センシティブデータ:
date_of_birth、gender、health_*、ethnicity
- 直接的な識別子:
- アプリケーションコードからログ内のPIIをスキャンします。ユーザーオブジェクトまたはリクエストIPを含む
console.log、logger.*、winston.*の呼び出しを検索します。 - サードパーティ統合をスキャンします。ユーザーデータを送信するAPI呼び出し(分析、メールプロバイダー、決済プロセッサー、CRM)を確認します。
- データフローインベントリをMarkdownテーブルとして出力します。 | データ型 | 保管場所 | 共有先 | 法的根拠 | 保持期間 |
同意管理
- 同意カテゴリを定義します。
strictly_necessary— 常にアクティブ、同意不要functional— プリファレンス、言語、UI設定analytics— 利用状況の追跡、パフォーマンス監視marketing— 広告ターゲティング、リマーケティングピクセル
- 次の機能を持つ同意バナーコンポーネントを構築します。
- 同意が得られるまで、不要なスクリプトをすべてブロックする
- カテゴリごとに詳細なオプトイン/オプトアウトを提供する
- 同意をデータベーステーブルに保存する(単なるCookieではなく)
- 同意記録スキーマ:
consent_records: id, user_id, version, strictly_necessary (always true), functional (bool), analytics (bool), marketing (bool), ip_address_hash, created_at - 同意が変更されたら、他のサービスがトラッキングの有効/無効化のためにリッスンできる
consent_updatedイベントを発行します。
データ主体要求 (DSR)
次の3つのエンドポイントを実装します。
データエクスポート(アクセス権/ポータビリティ):
- ユーザーのIDが出現するすべてのテーブルから、ユーザーに関するすべてのデータを収集します。
- 関連レコード(注文、コメント、セッション)を含めます。
- 明確な構造でJSONとして返します。オプションでCSVを提供します。
- ユーザーデータではないサードパーティのシークレットまたは内部IDをすべて修正します。
データ削除(消去権):
- すぐに削除しないでください。30日間のクーリングオフキューを使用します。
- キャンセルリンク付きの確認メールを送信します。
- 30日後、匿名化(PIIをハッシュ化/null値に置き換える)または完全削除のいずれかを行います。
- カスケード先: ログ(修正)、セッション(削除)、サードパーティ(利用可能な場合は削除APIをトリガー)。
- 必要に応じて、集計分析のために匿名化されたレコードを保持します。
同意履歴:
- ユーザーのすべての同意記録を日付順に返します。
- ユーザーがいつ何に同意したかを示すために、バージョン番号を含めます。
保持ポリシー
- 目的別にデータ型ごとの保持期間を定義します。
- セッションデータ: 90日
- IPアドレス: 30日(最後のオクテットをゼロにして匿名化)
- 削除済みアカウント: 30日後に完全削除
- 監査ログ: 1年(法的要件)
- マーケティングデータ: 同意が撤回されるまで
- 毎日実行され、これらのポリシーを適用するスケジュールされたジョブを構築します。
- 常に最初にドライランモードを実装します。削除せずに、影響を受けるものをログに記録します。
プライバシーポリシーの生成
- データフローインベントリを使用して、次の項目をリストするプライバシーポリシーを自動生成します。
- 収集されるデータ
- 理由(各タイプの法的根拠)
- 保持期間
- 共有先
- ユーザーの権利とその行使方法
- 平易な言葉を使用します。可能な限り法律用語は避けてください。
- 会社名、DPO連絡先、監督機関のプレースホルダーセクションを含めます。
例
例1 — PrismaスキーマでのPII検出
入力: "このPrismaスキーマでPIIを監査してください。"
model User {
id String @id @default(uuid())
email String @unique
name String
phone String?
createdAt DateTime @default(now())
orders Order[]
}
出力:
model Userで見つかったPIIフィールド:
- email (直接的な識別子) — 法的根拠、保持ポリシーが必要
- name (直接的な識別子) — 法的根拠が必要
- phone (直接的な識別子) — 法的根拠、保存時の暗号化を検討
推奨事項:
1. ソフトデリートをサポートするために`deletedAt`フィールドを追加する
2. ユーザーが同意したプライバシーポリシーのバージョンを追跡するために`consentVersion`フィールドを追加する
3. アプリケーションレベルの暗号化を使用して、保存時に`phone`を暗号化することを検討する
例2 — データ削除のカスケード
入力: "ユーザーアカウントの削除ハンドラーを構築します。"
出力:
async function handleDeletionRequest(userId) {
// 1. 削除リクエストレコードを作成する
await db.deletionRequest.create({
data: { userId, status: 'pending', expiresAt: addDays(new Date(), 30) }
});
// 2. キャンセルリンク付きの確認メールを送信する
await emailService.send(userId, 'deletion-confirmation', {
cancelUrl: `${BASE_URL}/api/privacy/cancel-deletion?token=${token}`
});
// 3. 30日後(cronジョブによってトリガーされる):
// await db.user.update({ where: { id: userId }, data: {
// email: `deleted-${hash}@anonymized.local`,
// name: 'Deleted User', phone: null
// }});
// await db.session.deleteMany({ where: { userId } });
// await analyticsService.deleteUser(userId);
}
ガイドライン
- GDPRコンプライアンスは単なる技術的なものではありません。 クライアントには、特定の管轄区域の法律専門家に相談することを常に推奨してください。
- デフォルトはオプトアウトです。 EUでは、分析とマーケティングには明示的なオプトインが必要です。同意ボックスを事前にチェックしないでください。
- 可能な場合は、削除よりも匿名化してください。 匿名化されたデータはもはや個人データではなく、分析のために保持できます。
- すべてのDSRをログに記録します。 規制当局は、リクエストが30日以内に処理されたことの証拠を求める場合があります。
- 削除のカスケードを徹底的にテストします。 単一のテーブルまたはサードパーティ統合を見逃すと、コンプライアンス違反になります。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
GDPR Compliance
Overview
This skill helps AI agents implement GDPR compliance across web applications. It covers the full lifecycle: auditing where personal data lives, building consent management, handling data subject requests (access, deletion, portability), enforcing retention policies, and generating documentation.
Instructions
PII Audit
- Scan database schemas (Prisma, SQL migrations, Sequelize models, TypeORM entities) for PII fields. Flag these patterns:
- Direct identifiers:
email,name,full_name,phone,address,ssn - Indirect identifiers:
ip_address,device_id,geo_*,lat,lng,user_agent - Sensitive data:
date_of_birth,gender,health_*,ethnicity
- Direct identifiers:
- Scan application code for PII in logs: search for
console.log,logger.*,winston.*calls that include user objects or request IPs. - Scan third-party integrations: check for API calls that send user data (analytics, email providers, payment processors, CRMs).
- Output a Data Flow Inventory as a markdown table: | Data Type | Storage Location | Shared With | Legal Basis | Retention Period |
Consent Management
- Define consent categories:
strictly_necessary— always active, no consent neededfunctional— preferences, language, UI settingsanalytics— usage tracking, performance monitoringmarketing— ad targeting, remarketing pixels
- Build a consent banner component that:
- Blocks all non-necessary scripts until consent is granted
- Provides granular opt-in/opt-out per category
- Stores consent in a database table (not just cookies)
- Consent record schema:
consent_records: id, user_id, version, strictly_necessary (always true), functional (bool), analytics (bool), marketing (bool), ip_address_hash, created_at - On consent change, fire a
consent_updatedevent that other services can listen to for enabling/disabling tracking.
Data Subject Requests (DSR)
Implement three endpoints:
Data Export (Right of Access / Portability):
- Collect all data for the user across all tables where their ID appears.
- Include related records (orders, comments, sessions).
- Return as JSON with a clear structure. Optionally offer CSV.
- Redact any third-party secrets or internal IDs that are not user data.
Data Deletion (Right to Erasure):
- Do NOT immediately delete. Use a 30-day cooling-off queue.
- Send confirmation email with a cancel link.
- After 30 days, either anonymize (replace PII with hashed/null values) or hard-delete.
- Cascade to: logs (redact), sessions (delete), third-party (trigger deletion APIs where available).
- Keep anonymized records for aggregate analytics if needed.
Consent History:
- Return all consent records for the user, ordered by date.
- Include version numbers to show what the user agreed to and when.
Retention Policies
- Define retention periods per data type based on purpose:
- Session data: 90 days
- IP addresses: 30 days (anonymize by zeroing last octet)
- Soft-deleted accounts: 30 days then hard delete
- Audit logs: 1 year (legal requirement)
- Marketing data: until consent withdrawn
- Build a scheduled job that runs daily and enforces these policies.
- Always implement dry-run mode first: log what would be affected without deleting.
Privacy Policy Generation
- Use the Data Flow Inventory to auto-generate a privacy policy that lists:
- What data is collected
- Why (legal basis for each type)
- How long it is kept
- Who it is shared with
- User rights and how to exercise them
- Use plain language — avoid legal jargon where possible.
- Include placeholder sections for: company name, DPO contact, supervisory authority.
Examples
Example 1 — PII detection in Prisma schema
Input: "Audit this Prisma schema for PII."
model User {
id String @id @default(uuid())
email String @unique
name String
phone String?
createdAt DateTime @default(now())
orders Order[]
}
Output:
PII fields found in model User:
- email (direct identifier) — requires legal basis, retention policy
- name (direct identifier) — requires legal basis
- phone (direct identifier) — requires legal basis, consider encryption at rest
Recommendations:
1. Add a `deletedAt` field for soft-delete support
2. Add a `consentVersion` field to track which privacy policy version the user agreed to
3. Consider encrypting `phone` at rest using application-level encryption
Example 2 — Data deletion cascade
Input: "Build a deletion handler for a user account."
Output:
async function handleDeletionRequest(userId) {
// 1. Create deletion request record
await db.deletionRequest.create({
data: { userId, status: 'pending', expiresAt: addDays(new Date(), 30) }
});
// 2. Send confirmation email with cancel link
await emailService.send(userId, 'deletion-confirmation', {
cancelUrl: `${BASE_URL}/api/privacy/cancel-deletion?token=${token}`
});
// 3. After 30 days (triggered by cron job):
// await db.user.update({ where: { id: userId }, data: {
// email: `deleted-${hash}@anonymized.local`,
// name: 'Deleted User', phone: null
// }});
// await db.session.deleteMany({ where: { userId } });
// await analyticsService.deleteUser(userId);
}
Guidelines
- GDPR compliance is not just technical. Always recommend the client consult a legal professional for their specific jurisdiction.
- Default to opt-out. In the EU, analytics and marketing require explicit opt-in. Never pre-check consent boxes.
- Anonymize over delete when possible. Anonymized data is no longer personal data and can be kept for analytics.
- Log every DSR. Regulators may ask for proof that requests were handled within the 30-day deadline.
- Test deletion cascades thoroughly. Missing a single table or third-party integration means non-compliance.