Claude-skill-registry data-safety-auditor
Comprehensive data safety auditor for Vue 3 + Pinia + IndexedDB + PouchDB applications. Detects data loss risks, sync issues, race conditions, and browser-specific vulnerabilities with actionable remediation guidance.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/data-safety-auditor-endlessblink-flow-state" ~/.claude/skills/majiayu000-claude-skill-registry-data-safety-auditor && rm -rf "$T"
manifest:
skills/data/data-safety-auditor-endlessblink-flow-state/SKILL.mdsource content
Data Safety Auditor
Purpose: Comprehensive audit tool that identifies data loss risks in Vue 3 + Pinia + IndexedDB + PouchDB applications with actionable remediation guidance.
Philosophy
This skill provides rigorous data safety analysis with:
- Zero tolerance for data loss - Identifies every potential failure point
- Complete coverage - Storage, sync, hydration, integrity, testing
- Evidence-based findings - Code locations, patterns, severity
- Actionable fixes - Specific remediation with code examples
- Test generation - Creates missing safety tests
What It Detects
CRITICAL Risks (Deployment Blockers)
- Storage full, data can't saveQUOTA_EXCEEDED
- 7-day data loss on SafariSAFARI_ITP_EXPIRATION
- QuotaExceededError not caughtUNHANDLED_QUOTA_ERROR
- PouchDB conflicts not handledNO_CONFLICT_RESOLUTION
- Multi-item updates can partially failNON_ATOMIC_UPDATES
HIGH Risks (Must Fix)
- Pinia data loads after renderHYDRATION_RACE_CONDITION
- Sync failures silently failNO_SYNC_ERROR_HANDLING
- Stranded data not detectedINCOMPLETE_SYNC_UNDETECTED
- Concurrent LocalForage writesRACE_CONDITION_SAME_KEY
- Storage calls have no try/catchUNHANDLED_STORAGE_ERROR
MEDIUM Risks (Should Fix)
- Data corruption undetectedNO_CHECKSUM_VERIFICATION
- Private mode data loss unhandledNO_PRIVATE_MODE_HANDLING
- PWA not requesting persistNO_PERSISTENT_STORAGE_REQUEST
- iframe storage isolatedSTORAGE_PARTITIONING_UNACCOUNTED
- LocalForage driver not checkedDRIVER_VALIDATION_MISSING
LOW Risks (Consider Fixing)
- Missing persistence test coverageNO_PERSISTENCE_TESTS
- Offline sync not testedNO_OFFLINE_TESTS
- Safari-specific tests missingMISSING_SAFARI_TESTS
Detection Categories
A. Browser-Specific Data Loss Vectors
- Storage quota limits and eviction policies per browser
- Safari ITP 7-day storage limitations
- Private/incognito mode behavior
- Storage partitioning impacts
B. Storage-Specific Patterns
- LocalForage race conditions
- Concurrent write conflicts
- Driver fallback behavior
- Configuration issues
C. Sync Patterns
- PouchDB/CouchDB conflict detection
- Network failure handling
- Incomplete sync detection
- Sync integrity verification
D. Vue/Pinia Risks
- Hydration race conditions
- beforeRestore/afterRestore hooks
- Object reference breakage
- Multiple persistence sources
E. Data Integrity Checks
- Schema validation on load
- Checksum verification
- Corruption detection
- Backup/recovery validation
F. Testing & Compliance
- Persistence test coverage
- Quota failure tests
- OWASP compliance
- GDPR data integrity
Usage
const 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);
Report Formats
- Console - Colored, readable CLI output with severity indicators
- JSON - Machine-readable for CI/CD integration
- Markdown - Documentation and reports
- HTML - Interactive dashboard view
Deployment Gate
The auditor enforces deployment gates:
- CRITICAL findings = Deployment blocked
- HIGH findings = Warning, recommend fixing
- MEDIUM/LOW = Information only
When to Use
Use this skill when:
- Before deploying to production
- After adding new persistence features
- When debugging data loss issues
- During code review of storage code
- Setting up CI/CD quality gates
- Auditing third-party storage libraries
Integration
CI/CD Pipeline
const report = await auditor.auditVueApp('./src'); if (report.hasBlockers()) { console.error('DEPLOYMENT BLOCKED: Critical data safety issues found'); process.exit(1); }
Custom Rules
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' }; } });
MANDATORY USER VERIFICATION REQUIREMENT
Policy: No Safety Claims Without User Confirmation
CRITICAL: Before claiming ANY data safety issue is "fixed", "resolved", or "safe", the following verification protocol is MANDATORY:
Step 1: Technical Verification
- Run full audit with all detectors
- Verify no CRITICAL or HIGH findings
- Take screenshots/evidence of clean audit
Step 2: User Verification Request
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."
Step 3: Wait for User Confirmation
- DO NOT claim app is "data safe" until user confirms
- DO NOT approve deployment without user verification
- DO NOT skip any CRITICAL finding verification
Remember: The user is the final authority on data safety. No exceptions.