agentleFS
moh-obaidamoh-obaida/ReadyVibe-Skills/skills/compliance/privacy-policy/SKILL.md

privacy-policy

Skill2 starsChanged 25 days agoApache-2.0View on GitHub

Use when a site needs a privacy notice, or an existing one must reflect real behavior: it inspects what is collected, by whom, for what, and where it goes, separates supported facts from missing owner facts, and drafts only what evidence supports with clearly marked gaps. Do not use it to paste generic boilerplate, to invent addresses, retention periods, legal bases, or contacts, or to state that the notice makes the site compliant.

We split this skill into the rules it gives an agent

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

  • 0

    Common

    Most of the 12 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Not when a lawyer's finished text exists (compare it with policy-consistency instead), and not to certify anything.

    line 22
  2. Distinctive:

    Every sentence in the notice that states a fact about the product needs a source in the fact sheet.

    line 55
  3. Very specific:

    Every observed cookie, vendor, and data field appears in the notice.

    line 70
  4. Very specific:

    All links resolve (node scripts/check-links.mjs --url <site> --render, path relative to this skill's folder).

    line 71
  5. Distinctive:

    Verify internal links and working contact destinations.

    line 73

“Common” is measured: kept by at least 6 in 10 of the 12 edited versions of this file we could read. “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

privacy-policy

A privacy policy that does not describe the product is worse than none: it is a false statement. This skill drafts (or repairs) a notice from evidence, and refuses to fill gaps with plausible fiction.

Activate when

  • The product collects, stores, or transmits anything personal and there is no notice, an outdated one, or one written for a different product.
  • The footer or forms link to a privacy page that does not exist (coordinate with legal-navigation).
  • Not when a lawyer's finished text exists (compare it with policy-consistency instead), and not to certify anything.

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: data-flow-mapping, cookie-and-storage-audit, analytics-privacy, third-party-privacy, data-rights, email-compliance, minors-readiness, payments-readiness, policy-consistency, design-system-reconnaissance.

Inspect

  1. Use existing evidence first: .readyvibe/context.md (if present), then trace frontend and backend forms/routes, auth, data models/API writes, hosting/CDN configuration, payment and authentication processors, analytics and AI integrations, logs, and runtime requests. Reuse data-flow-mapping, cookie-and-storage-audit, analytics-privacy, data-rights, email-compliance, minors-readiness, payments-readiness, and third-party-privacy when their surfaces exist. Code presence is SOURCE-INDICATED until production behavior is established; browser non-observation does not prove a server or vendor collects nothing.
  2. Build a fact sheet with an evidence label for every line:

    TopicWhat we knowSource
    Who we areactual operator name/entity, address, contactOWNER REQUIRED; confirm with the owner. Never infer an operator from a domain, username, repository owner, or brand
    Data collectedfields per form/account/checkout; automatic data (IP, device, cookies)observed / source
    Purposeswhy each is collecteddocumented / inferred / MISSING
    Recipientsprocessors, analytics, payments, email, hosting, supportobserved / source
    Retentionperiods or criteriausually MISSING
    Legal basis / marketsREVIEW REQUIRED
    User rights and how to exercisecontact/mechanism that actually worksobserved (data-rights) / MISSING
    Transferswhere vendors process dataUNKNOWN unless documented
    Childrenaudience and age handlingminors-readiness
    Cookies/trackersinventorycookie-and-storage-audit
  3. Use the conditional privacy template at references/legal-templates/02-privacy-policy.md, and the usage guide. Write only what the fact sheet supports. Classify each gap UNKNOWN or REVIEW REQUIRED; keep unresolved values and review notes in a private draft/report, not in a public page. A browser test alone cannot establish collection by hosting, a CDN, server logs, or processors.
  4. Structure for the reader, plain language, headings that match what visitors look for: who we are; what we collect and why; who we share it with; cookies and similar technologies; how long we keep it [gap]; your choices and rights (with the working contact route); children; changes to this notice; how to contact us. Reflect this product's actual features, not a full menu of clauses.
  5. Implement the page when appropriate: inspect the project's design system, reuse its shell, typography, components, spacing, navigation and accessibility conventions, create/update the established privacy route, and link it from the footer and every data-collecting form. Preserve responsive behavior. Do not overwrite owner-approved legal text without an appropriate review.

Evidence that counts

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

  • Every sentence in the notice that states a fact about the product needs a source in the fact sheet. If it does not have one, it stays in the private draft/report as unresolved or is removed.
  • Vendor names come from observed requests or code, not from a template list of "typical" vendors.
  • Contact points must be real and working: verify the email/form exists (public-support).
  • Legal specifics: never from memory. When a rule, deadline, threshold, or required wording matters, read the current text or guidance at an official source while you run (start from references/official-sources.md), cite the source and access date, and treat applicability to this business as REVIEW REQUIRED. If you cannot look it up, the answer is UNKNOWN.

May change

Create or update the privacy page and its links; correct statements to match the fact sheet; add data-collection notices near forms where a short pointer helps. Leave the owner's legal text alone: if a lawyer-authored notice exists, produce a diff of mismatches, not a rewrite.

Must not claim

That the notice "complies with GDPR/CCPA/…", "covers all requirements", or "is legally sufficient". Do not invent: legal entity or address, DPO or representative, retention periods, legal bases, transfer safeguards, rights timelines, "we never sell your data" without evidence, age thresholds, or jurisdiction-specific sections. Do not copy another company's policy.

Verify

  • Every observed cookie, vendor, and data field appears in the notice; nothing in the notice contradicts policy-consistency results.
  • All links resolve (node scripts/check-links.mjs --url <site> --render, path relative to this skill's folder); the page renders with the site's styling at desktop and 375px; a footer link and form links exist.
  • The public page contains no {{...}}, [[IF ...]], [[END IF]], [[REVIEW REQUIRED: ...]], or internal drafting markers. Run node scripts/audit-markup.mjs --url <site> --render; it must report no PLACEHOLDER_TEXT finding on the published page. If a consequential fact is unresolved, keep a private DRAFT — REVIEW REQUIRED, list the exact owner decision/legal review needed, and do not publish it or remove the marker by guessing.
  • Verify internal links and working contact destinations. If the page claims users can access, correct, export, delete, or opt out, exercise the actual corresponding control; policy wording alone is not proof. Check that every translated route/link is consistent when the site is multilingual.

Escalate

The moment markets, audience, or data types imply specific statutory content (children's data, health, finance, biometric, precise location, employee data, cross-border transfers, automated decisions): mark REVIEW REQUIRED, look up the relevant requirements at an official source, cite them, and say what specifically you could not determine (for example the legal basis, retention, or transfer safeguards). Keep the recommendation proportional: name the specific unresolved fact or risk that warrants it (minors, sensitive data, a regulated domain, cross-border sale, unclear markets, contested wording), and do not tell an ordinary low-risk site to hire a lawyer. A small site that collects an email address and runs one disclosed analytics tool, with facts the owner has confirmed, can be reported as: notice matches observed behavior; owner-only facts listed.

No change is valid when

Nothing personal is collected, stored, or transmitted (verified, not assumed) and a notice would describe nothing; or an existing notice matches behavior and the owner has legal-reviewed it. Then report "no privacy notice change needed; recheck if forms, accounts, analytics, or email are added".

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.

Reviews can't be read right now.

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.