skills/data-masker/SKILL.md
Masks production data for test and development environments (Data Masking). Detects PII (email, SSN, credit cards) and obfuscates them safely.
npx skillsauth add fatih-developer/fth-skills data-maskerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill prevents sensitive production data (PII, PHI, financial records) from leaking into lower environments (staging, development, testing). It analyzes schemas and generates idempotent masking scripts.
Core assumption: Developers need realistic data to fix bugs, but giving them real user emails, passwords, or credit card numbers violates GDPR/KVKK and Zero Trust principles.
.sql, schema files, or DDL text.email, ssn, tc_kimlik, phone, ip_address, mac_address.credit_card, iban, balance, salary.birth_date, blood_type, address, location_lat_lon.Do not just overwrite everything with 'REDACTED'. Choose the right mathematical mutation to keep the data realistic for QA testing:
[email protected] becomes [email protected].+1 (555) 123-4567 becomes +1 (555) ***-**67. Devs can still test formatting validations.salary: 105,000 -> add +/- 20% random variance -> 91,200. Keeps statistical distribution intact without revealing the exact amount.password123) so devs can log in as any test user without knowing the real user's password.Provide an executable SQL script that can be run on a cloned staging database.
Required Outputs (Must write BOTH to docs/database-report/):
docs/database-report/data-masking-report.md)### 🛡️ PII Discovery
- **Risk Level: HIGH** (Found emails, phones, and hashed passwords).
### 🛠️ Masking Execution Script (PostgreSQL)
```sql
-- Disable triggers temporarily to speed up the masking
ALTER TABLE users DISABLE TRIGGER ALL;
-- Masking `users` table
UPDATE users SET
-- Strategy: Deterministic Substitution
email = 'masked_' || id || '@sandbox.local',
first_name = 'User_' || substring(md5(random()::text) from 1 for 6),
last_name = 'Test',
-- Strategy: Partial Redaction
phone_number = concat(left(phone_number, 3), '***', right(phone_number, 2)),
-- Strategy: Known Dev Value
password_hash = '$2b$10$dev_password_hash_xyz';
-- Re-enable triggers
ALTER TABLE users ENABLE TRIGGER ALL;
2. **Machine-Readable JSON (`docs/database-report/data-masking-output.json`)**
```json
{
"skill": "data-masker",
"pii_found": ["email", "phone_number", "password_hash"],
"masking_strategies_applied": {
"email": "Deterministic Substitution",
"phone_number": "Partial Redaction"
},
"sql_script_generated": "UPDATE users SET email = ..."
}
UPDATE on 10 million rows will overwhelm WAL logs. If the table is massive, suggest the CREATE TABLE AS SELECT (CTAS) strategy instead of UPDATE.email is used as a Foreign Key (Anti-pattern, but it happens), masking it will break relationships. Detect FKs before masking.tools
Create, optimize, critique, and structure prompts for AI systems. Use this skill whenever the user is designing or improving a prompt, system prompt, coding prompt, image prompt, evaluation rubric, agent prompt, workflow prompt, or MCP-oriented prompt package. Also use it when the user asks to turn vague AI behavior into a precise instruction set, tool policy, agent spec, or prompt architecture.
testing
Assumption-first architecture review skill to stress-test project plans and expose hidden risks.
testing
Enforce and manage DESIGN.md specifications, extract design systems from URLs, and combine design reasoning with token roles to prevent drift.
testing
Forces the agent to act with a Claude-like product mindset, prioritizing user journey, UX states, and visual quality before coding.