From claude-dev-infrastructure
Audits data safety in Vue 3 + Pinia + IndexedDB + PouchDB apps. Detects data loss risks, sync issues, race conditions, quota errors, and browser vulnerabilities with fixes and tests.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-dev-infrastructure:data-safety-auditorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Purpose**: Comprehensive audit tool that identifies data loss risks in Vue 3 + Pinia + IndexedDB + PouchDB applications with actionable remediation guidance.
Purpose: Comprehensive audit tool that identifies data loss risks in Vue 3 + Pinia + IndexedDB + PouchDB applications with actionable remediation guidance.
This skill provides rigorous data safety analysis with:
QUOTA_EXCEEDED - Storage full, data can't saveSAFARI_ITP_EXPIRATION - 7-day data loss on SafariUNHANDLED_QUOTA_ERROR - QuotaExceededError not caughtNO_CONFLICT_RESOLUTION - PouchDB conflicts not handledNON_ATOMIC_UPDATES - Multi-item updates can partially failHYDRATION_RACE_CONDITION - Pinia data loads after renderNO_SYNC_ERROR_HANDLING - Sync failures silently failINCOMPLETE_SYNC_UNDETECTED - Stranded data not detectedRACE_CONDITION_SAME_KEY - Concurrent LocalForage writesUNHANDLED_STORAGE_ERROR - Storage calls have no try/catchNO_CHECKSUM_VERIFICATION - Data corruption undetectedNO_PRIVATE_MODE_HANDLING - Private mode data loss unhandledNO_PERSISTENT_STORAGE_REQUEST - PWA not requesting persistSTORAGE_PARTITIONING_UNACCOUNTED - iframe storage isolatedDRIVER_VALIDATION_MISSING - LocalForage driver not checkedNO_PERSISTENCE_TESTS - Missing persistence test coverageNO_OFFLINE_TESTS - Offline sync not testedMISSING_SAFARI_TESTS - Safari-specific tests missingconst auditor = new DataSafetyAuditor();
// Full project audit
const report = await auditor.auditVueApp('./src');
console.log(report.toConsole());
// Targeted audits
const quotaFindings = await auditor.checkQuotaRisks(codeAST);
const itpFindings = await auditor.checkSafariCompat(codeAST);
const piniaFindings = await auditor.checkPiniaPersistence(piniaStore);
const syncFindings = await auditor.checkSyncIntegrity(pouchdbCode);
// Generate missing tests
const tests = await auditor.generateTestSuite();
// Get detailed remediation
const fixes = await auditor.suggestRemediations(findings);
The auditor enforces deployment gates:
Use this skill when:
const report = await auditor.auditVueApp('./src');
if (report.hasBlockers()) {
console.error('DEPLOYMENT BLOCKED: Critical data safety issues found');
process.exit(1);
}
auditor.rules.addRule('MUST_USE_ENCRYPTION', (code) => {
if (code.includes('sensitive_data') && !code.includes('crypto.subtle')) {
return { severity: 'CRITICAL', msg: 'Sensitive data must be encrypted' };
}
});
CRITICAL: Before claiming ANY data safety issue is "fixed", "resolved", or "safe", the following verification protocol is MANDATORY:
REQUIRED: Use the AskUserQuestion tool to explicitly ask the user to verify:
"I've completed the data safety audit. Before confirming your app is safe, please verify:
1. [Specific storage operations to test]
2. [Sync scenarios to test]
3. [Browser-specific tests to run]
Please confirm the data persists correctly, or let me know what's failing."
Remember: The user is the final authority on data safety. No exceptions.
npx claudepluginhub mulkerrin-sean/cc-marketplace --plugin claude-dev-infrastructureAudits data safety in Vue 3 + Pinia + IndexedDB + PouchDB apps. Detects data loss risks, sync issues, race conditions, quota errors, and browser vulnerabilities with fixes and tests.
Reviews Pinia/Vuex state stores for five security defect classes: sensitive data persistence, untrusted hydration, SSR pollution, store plugin vulnerabilities, and devtools exposure.
Audits pre-deploy security for vibe-coded apps, catching common mistakes like unauthenticated APIs, missing RLS, leaked keys, and hardcoded secrets. Stack-aware for Next.js, Supabase, etc.