一键导入
agentic-security-privacy-data-flow
Privacy review before handling user data. Activate on PII/PHI/PCI shapes (email, SSN, CC, MRN). Writes DATA_FLOW.md.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Privacy review before handling user data. Activate on PII/PHI/PCI shapes (email, SSN, CC, MRN). Writes DATA_FLOW.md.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Guard risky writes. Activate before eval/exec, string-concat SQL, md5/sha1/DES/RC4 crypto, or auth/jwt/oauth/cipher.
Explain or teach a vuln. Activate on a CVE/GHSA id, "what is this vuln", "explain finding", or a Socratic walkthrough.
Rotate a leaked secret end-to-end. Activate on leaked API key, exposed credential, or pushed-secret reports.
Run the security scanner. Activate on ship / deploy / launch / "is this safe?" — before the deploy happens.
Apply a remediation patch via the deterministic MCP toolchain. Activate when user asks to fix a scanner finding.
Walk through the six-step recipe for adding a new SAST detector — pick the module, export scan*(), wire, fixture, test.
基于 SOC 职业分类
| name | agentic-security:privacy-data-flow |
| description | Privacy review before handling user data. Activate on PII/PHI/PCI shapes (email, SSN, CC, MRN). Writes DATA_FLOW.md. |
Activates before you write code that reads, stores, transmits, or logs a piece of user data that may be classified PII / PHI / PCI / regulated. Privacy violations almost always look fine in code review — they're violations because of where the data goes, not what the line of code says. This skill makes the destination visible BEFORE the data flows.
You're about to call Edit / Write with a body that touches one of
these data shapes:
PII (general identifiability)
email, phone, dob, ssn, address, lat/lon,
national_id, tax_id, student_id.PHI (HIPAA)
mrn, patient_id, diagnosis, icd_code, prescription,
treatment_plan, insurance_plan.PCI (PCI-DSS)
pan, card_number, cc_num, cvv, cvc, iban,
bank_account, track_data.Special category (GDPR Art. 9 / CCPA "sensitive personal info")
Confidential business
Pause before the Edit. Don't write the code yet. Surface the data-class question.
Classify the data. For each user-data field the code touches, answer:
Trace the destination. Where does this field GO from this line of code? Walk the data flow:
| Stage | Question |
|---|---|
| Storage tier | Database table? Cache (Redis)? Log file? Disk? In-memory? |
| Encryption at rest | Is the storage tier encrypted? Per-row or per-disk? Key managed where? |
| Encryption in transit | TLS required? Mutual TLS? Cert pinning? |
| Third-party processors | Does this field reach: Stripe, Supabase, Clerk, Auth0, Sentry, PostHog, Segment, Mixpanel, OpenAI, Anthropic, AWS S3, Cloudflare, …? |
| Logging | Does it appear in stdout, error logs, exception traces, request logs, audit logs? Is it redacted? |
| Retention | How long is it kept? Where's the deletion trigger? Is "right to be forgotten" wired up? |
| Backups | Does the backup include this field? Are backups encrypted? Same retention? |
| Replication | Does the data cross a region boundary? Which? |
Map to jurisdiction. Which laws apply?
Cite the existing controls if they're in the codebase:
.agentic-security/last-scan.json flags it under crown-jewels?data_classes: rule in .agentic-security/rules.yml?Write the result to the scratchpad via MCP:
append_scratchpad({
path: ".agentic-security/agent-scratchpad/privacy/<session>/DATA_FLOW.md",
content: "<the classification + flow + jurisdiction block>"
})
Propose the literal implementation that satisfies every
requirement that DOES apply. For each defensive measure, cite the
regulation row in a code comment (e.g. // GDPR Art. 32: encryption at rest).
Refuse outright if the implementation would violate hard rules:
xxxx xxxx xxxx 1234 masked form.# DATA_FLOW.md — privacy review for <feature/file>
## Field: <patient.diagnosis>
Date: 2026-05-20T14:32:00Z
File:line: src/api/patient.ts:142
Construct: `await db.patients.update({ where: { id }, data: { diagnosis } })`
### Classification
Class: PHI (HIPAA)
Sensitivity: High
Field type: ICD-10 code + free-text notes
### Flow
Storage tier: postgres `patient_records` table (RDS, encrypted at rest with KMS)
Encryption transit: TLS 1.3 (mTLS via the app's VPC to the DB)
Third-party seen by: Sentry (error context — REDACTED via beforeSend hook)
Datadog (DOES NOT see — patient_id is hashed in logs)
OpenAI (DOES NOT see — diagnosis is never sent to LLM features)
Logging: audit_log table (success only); error logs do NOT include
the value (redacted upstream)
Retention: 7 years per HIPAA 164.530(j); deletion via
DELETE_PATIENT_DATA function with BAA evidence
Backups: encrypted; same 7y retention
Replication: us-east-1 only; no cross-region replication
### Jurisdiction
HIPAA: Yes — covered entity. BAA in place with Sentry, AWS, Datadog.
GDPR Art. 9: Yes for EU patients — explicit consent flag (`consents.research`)
required for any analytical use of diagnosis.
CCPA: Sensitive personal info; opt-out flow at /privacy/opt-out.
### Decisions
- Diagnosis updates audit-logged with actor + before/after hash.
- LLM features (`summarizeHistory()` server-side helper) read a REDACTED view that strips
free-text notes; only ICD codes flow through.
- Webhooks fired on update DO NOT include the diagnosis field
(only `patient_id` + `event: diagnosis_updated`).
### Open questions
- Cross-border data flow on customer migration to EU region: do we
need to negotiate SCC with Sentry before turning on EU?
- Patient export request: current PDF includes diagnosis verbatim; is
that the right level of detail for the right-of-access response?
/compliance --report — generate PRIVACY.md + cookie banner from the stack/compliance --report nist|asvs|llm — generate auditor-ready attestation/scan --all followed by /triage --show --threat-model — surface
data-class findings the scanner already detectedThe /compliance --report slash produces a privacy artifact AFTER the project
is built. This skill produces a per-field data-flow record before
the field is written. The two are complementary — privacy-docs is the
post-hoc summary; this is the pre-write gate.