accessibility-patterns
WCAG 2.2 AA compliance, ARIA patterns, keyboard navigation, screen reader optimization
GDPR compliance - data subject rights, lawful basis, DPIA, privacy by design, breach notification, consent management, cross-border transfers, PII masking
Claude Code
$ npx -y skills add vibeeval/vibecosystem --skill gdpr-compliance --agent claude-code
Codex
$ npx skills add vibeeval/vibecosystem --skill gdpr-compliance -a codex -y
Cursor
$ npx skills add vibeeval/vibecosystem --skill gdpr-compliance -a cursor -y
Gemini CLI
$ npx skills add vibeeval/vibecosystem --skill gdpr-compliance -a gemini-cli -y
GitHub Copilot
$ npx skills add vibeeval/vibecosystem --skill gdpr-compliance -a github-copilot -y
OpenCode
$ npx skills add vibeeval/vibecosystem --skill gdpr-compliance -a opencode -y
Windsurf
$ npx skills add vibeeval/vibecosystem --skill gdpr-compliance -a windsurf -y
name: gdpr-compliance description: GDPR compliance - data subject rights, lawful basis, DPIA, privacy by design, breach notification, consent management, cross-border transfers, PII masking
| Right | Article | SLA | Implementation | |-------|---------|-----|----------------| | Right of Access | Art. 15 | 30 gun | Data export endpoint | | Right to Rectification | Art. 16 | 30 gun | Profile edit + audit trail | | Right to Erasure | Art. 17 | 30 gun | Cascading delete + anonymize | | Right to Restriction | Art. 18 | 30 gun | Processing flag on record | | Right to Portability | Art. 20 | 30 gun | Machine-readable export (JSON/CSV) | | Right to Object | Art. 21 | 30 gun | Opt-out mechanism | | Automated Decision-Making | Art. 22 | 30 gun | Human review override |
interface DSRRequest {
id: string;
type: 'access' | 'rectification' | 'erasure' | 'restriction' | 'portability' | 'objection';
subjectId: string;
verifiedIdentity: boolean;
receivedAt: Date;
deadline: Date; // receivedAt + 30 gun
status: 'received' | 'verified' | 'processing' | 'completed' | 'rejected';
reason?: string;
}
async function handleDSR(request: DSRRequest): Promise<DSRResponse> {
// Step 1: Identity verification ZORUNLU
if (!request.verifiedIdentity) {
return { status: 'rejected', reason: 'Identity not verified' };
}
// Step 2: Check deadline
const daysRemaining = differenceInDays(request.deadline, new Date());
if (daysRemaining <= 5) {
await alertDPO({ type: 'dsr_deadline_approaching', request });
}
// Step 3: Process by type
switch (request.type) {
case 'access':
return await generateDataExport(request.subjectId);
case 'erasure':
return await executeErasure(request.subjectId);
case 'portability':
return await generatePortableExport(request.subjectId, 'json');
case 'rectification':
return await updateSubjectData(request.subjectId, request.corrections);
case 'restriction':
return await restrictProcessing(request.subjectId);
case 'objection':
return await recordObjection(request.subjectId, request.reason);
}
}async function executeErasure(subjectId: string): Promise<ErasureResult> {
const erasureLog: ErasureStep[] = [];
await db.transaction(async (tx) => {
// 1. Anonymize user record (yasal zorunluluklar haric)
await tx.users.update({
where: { id: subjectId },
data: {
email: `erased-${hash(subjectId)}@deleted.local`,
name: 'Erased User',
phone: null,
address: null,
dateOfBirth: null,
deletedAt: new Date(),
},
});
erasureLog.push({ table: 'users', action: 'anonymized' });
// 2. Delete personal messages
const deletedMessages = await tx.messages.deleteMany({
where: { userId: subjectId },
});
erasureLog.push({ table: 'messages', action: 'deleted', count: deletedMessages.count });
// 3. Delete sessions and tokens
await tx.sessions.deleteMany({ where: { userId: subjectId } });
await tx.refreshTokens.deleteMany({ where: { userId: subjectId } });
erasureLog.push({ table: 'sessions', action: 'deleted' });
// 4. Anonymize audit logs (log kaydi kalir, kisi bilgisi gider)
await tx.auditLogs.updateMany({
where: { actorId: subjectId },
data: { actorId: 'erased', actorEmail: 'erased' },
});
erasureLog.push({ table: 'auditLogs', action: 'anonymized' });
// 5. Notify third-party processors
await notifyProcessors(subjectId, 'erasure');
// 6. Record erasure for compliance
await tx.erasureRecords.create({
data: {
subjectHash: hash(subjectId),
erasedAt: new Date(),
systems: erasureLog,
},
});
});
return { success: true, steps: erasureLog };
}| Basis | Article | When to Use | Example | |-------|---------|-------------|---------| | Consent | Art. 6(1)(a) | Optional processing, marketing | Newsletter signup | | Contract | Art. 6(1)(b) | Necessary for service delivery | Order processing | | Legal obligation | Art. 6(1)(c) | Required by law | Tax records | | Vital interests | Art. 6(1)(d) | Life-threatening situations | Emergency contact | | Public interest | Art. 6(1)(e) | Public authority tasks | Government services | | Legitimate interest | Art. 6(1)(f) | Business need, balanced with rights | Fraud prevention |
## Data Protection Impact Assessment **Project:** [proje adi] **Date:** [tarih] **DPO Review:** [evet/hayir] ### 1. Processing Description - What data: [veri turleri] - Why: [amac] - How: [islem yontemi] - Who: [erisim kimlerde] - How long: [saklama suresi] ### 2. Necessity & Proportionality - Lawful basis: [hukuki dayanak] - Data minimization: [minimum veri mi?] - Purpose limitation: [amac sinirli mi?] - Storage limitation: [saklama suresi uygun mu?] ### 3. Risk Assessment | Risk | Likelihood | Impact | Severity | Mitigation | |------|-----------|--------|----------|------------| | Unauthorized access | [L/M/H] | [L/M/H] | [L/M/H] | [onle
A focused runtime for Claude Code. A bounded worker for Codex. Catalog (in repo): Default core: vibecosystem packages agents, skills and hooks for software work.
WCAG 2.2 AA compliance, ARIA patterns, keyboard navigation, screen reader optimization
axe-core integration, WCAG 2.2 AA checklist, keyboard navigation testing, screen reader testing, and ARIA pattern validation.
Steam-style achievement system with XP, levels, streaks, and skill trees. Gamifies the development workflow. 25 achievements…
Framework for measuring and tracking agent response quality over time. Detects regressions before they reach production. Use when…
Agent ve skill dosyalarinin yapisal dogrulamasi. Frontmatter kontrol, naming convention, zorunlu bolum kontrolu, tutarlilik…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.