agentleFS
moh-obaidamoh-obaida/ReadyVibe-Skills/skills/compliance/data-flow-mapping/SKILL.md

data-flow-mapping

Skill2 starsChanged 25 days agoApache-2.0View on GitHub

Use when you need a factual map of what personal data a site collects and where it goes: form fields, account data, database columns, API routes, cookies and identifiers, and every recipient from vendors to email and analytics. It is the input for privacy notices, deletion flows, and vendor reviews. Do not use it to decide a legal basis, to write the notice, or to guess flows you cannot find in code or traffic.

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 3 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Every privacy statement, deletion promise, and vendor list rests on one question: what data enters, where does it go, and where is it …

    line 15
  2. Distinctive:

    Before drafting or checking a privacy notice, a deletion/export flow, or a vendor list.

    line 19
  3. Distinctive:

    Not to assign legal bases or conclude what is lawful.

    line 21
  4. Very specific:

    Entry points: Every <form>, input, upload, OAuth/signup flow, API/server action, webhook, and analytics/identify call.

    line 31
  5. Very specific:

    Only a map file (.readyvibe/data-map.md).

    line 50

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

data-flow-mapping

Every privacy statement, deletion promise, and vendor list rests on one question: what data enters, where does it go, and where is it stored? This skill answers it from code and traffic.

Activate when

  • Before drafting or checking a privacy notice, a deletion/export flow, or a vendor list.
  • The product has forms, accounts, checkout, uploads, or server routes that receive user data.
  • Not to assign legal bases or conclude what is lawful.

Working alone

This skill is self-contained. Its companions (declared in its metadata) are skills whose method it may need to do its own promised work. Use of a companion can be conditional: declaring one does not mean running it. When a companion's lane applies, use the skill if it is installed; if not, follow its short entry in references/companion-methods.md and say in your report which lanes ran inline at reduced depth. Never skip an applicable lane silently. Skills mentioned here only for escalation, referral, documentation, or optional deeper follow-up are not dependencies: report the hand-off and finish honestly.

Companions: cookie-and-storage-audit.

Inspect

  1. Entry points. Every <form>, input, upload, OAuth/signup flow, API/server action, webhook, and analytics/identify call. For each: which fields (email, name, phone, address, DOB, payment, free text, files, location, IDs, IP).
  2. Storage. Start with node scripts/inventory-data-model.mjs --root . (path relative to this skill's folder). It lists entities and columns from Prisma, SQL migrations, Drizzle, and Mongoose, and flags personal-data-like, secret-like, soft-delete, and owner columns; it shows what is defined, not populated, and names stores it cannot read (read those from code). Then read the database schema/migrations/ORM models, key-value stores, object storage buckets, logs, third-party CRMs. Identify tables/columns that hold personal data, and soft-delete flags, retention or cleanup code, backups you can see referenced.
  3. Flows out. Server-side calls to email, payment, CRM, support, AI, analytics, storage APIs; client-side third-party requests (with cookie-and-storage-audit). Record what fields go to which recipient.
  4. Identifiers. User IDs in URLs, cookies, localStorage, analytics distinct IDs; whether they are linkable to a person.
  5. Sensitive signals. Health, finance, biometrics, precise location, children, government IDs, credentials, free-text fields that may contain any of these. Flag for regulated-domain-triggers.
  6. Verify a sample at runtime on a local/staging build: submit a form with node scripts/observe-runtime.mjs --url <local-or-staging-url> --canary --steps form.json (path relative to this skill's folder) and see which hosts receive the planted values.

Deliver a compact table: field → collected where → stored where → sent to whom → deletable how (or "unknown"), each row with an evidence label.

Evidence that counts

Label each claim OBSERVED, SOURCE-INDICATED, DECLARED, INFERRED, UNKNOWN, or REVIEW REQUIRED. UNKNOWN is never a pass and never a failure.

  • Code that sends a field to a vendor is SOURCE-INDICATED; a captured request is OBSERVED.
  • A database column is SOURCE-INDICATED storage; it does not prove the field is populated.
  • Third-party SaaS internals (what the vendor does after receipt) are UNKNOWN.

May change

Only a map file (.readyvibe/data-map.md). It does not change the product. If you find unintended collection (an unused field storing PII, PII in URLs, PII in logs), report it and fix only when trivial and clearly unintended.

Must not claim

That the map is complete. Say what you covered: files searched, routes exercised, backends not inspectable. Never claim "no personal data is collected" without checking forms, cookies, analytics, and server logs' visible configuration.

Verify

Pick three fields at random and trace end to end (form → storage → recipient); the map should predict what you observe. Check that every form you found while crawling the site is in the map.

Escalate

Sensitive or regulated data; PII in URLs or client-side storage; a recipient nobody can identify; data flowing to a vendor with no disclosure.

No change is valid when

The product genuinely has no forms, accounts, or data-receiving routes and no third-party requests: record "no personal-data flows found in: <places searched>".

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.