third-party-privacy
Skill2 starsChanged 25 days agoApache-2.0View on GitHub
Use when a site loads scripts, fonts, maps, video, chat, captcha, payment widgets, CDNs, or SDKs from other origins and you need to know who receives visitor data and whether that is disclosed and necessary. It maps every third-party host observed or indicated, what each sees, and what to review. Do not use it to declare a vendor illegal, to judge transfer legality, or to remove a dependency the product needs without asking.
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 4 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Every third-party request tells that third party at least the visitor's IP address, user agent, and the page they were on.
- Distinctive: line 20
Not to rule on international transfer legality or contractual terms with vendors (REVIEW REQUIRED).
- Distinctive: line 42
Update the recipient list in the disclosure to state observed recipients (with categories you verified).
- Distinctive: line 43
Never remove a payment, fraud, captcha, or security dependency to "reduce third parties".
≈ “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.
Files
third-party-privacy
Every third-party request tells that third party at least the visitor's IP address, user agent, and the page they were on. This skill lists who those third parties are and whether the site knows it.
Activate when
- Any third-party origin appears in network traffic or source (fonts, CDNs, embeds, widgets, SDKs).
- The privacy notice needs a recipient list, or the owner wants to reduce external dependencies.
- Not to rule on international transfer legality or contractual terms with vendors (REVIEW REQUIRED).
Inspect
- Runtime map (OBSERVED).
node scripts/observe-runtime.mjs --url <site> --settle 2000 --json(paths relative to this skill's folder). ReadthirdPartyHostsandvendorsper snapshot. Do it for the home page, a form page, a page with embeds, and a checkout/login page if reachable. Unclassified hosts are listed; identify each (script URL, docs, search the source for the host). - Source map (SOURCE-INDICATED).
<script src>,<link href>to other origins, CSS@import/url(),<iframe>embeds, SDK imports, server-side calls to APIs (payments, email, AI, CRM, maps) that receive user data. - For each recipient record: what it is; category; what it receives (IP and page URL always; cookies? user identifiers? form data? message content?); when it loads (before or after choice); whether it is necessary for a feature the visitor requested; whether it can be self-hosted or replaced (Google Fonts → self-hosted fonts; YouTube embed →
youtube-nocookie.comor click-to-load facade; map → static image or click-to-load). - Personal data reaching them. For forms, run a local/staging submit step with
--canaryand readCANARY_SENT_TO_THIRD_PARTY(which host, which field, which encoding). - Disclosure. Which recipients does the notice name? Which does it omit? Which named ones never appear?
- Server-side recipients you cannot observe from the browser are UNKNOWN: list them from code and env templates as SOURCE-INDICATED.
Evidence that counts
Label each claim OBSERVED, SOURCE-INDICATED, DECLARED, INFERRED, UNKNOWN, or REVIEW REQUIRED. UNKNOWN is never a pass and never a failure.
- Observed request to a host: OBSERVED that the browser contacted it; not evidence of what the vendor does with the data.
- The vendor catalog classifies hosts heuristically. A category is a lead to verify, not a finding.
- Embeds inside iframes may load further third parties you did not see if the iframe did not load; say what was exercised.
May change
- Replace with a privacy-preserving equivalent when it is low-risk and the owner agrees: self-host fonts, use click-to-load facades for video/maps, remove unused SDKs/scripts, pin and integrity-check CDN scripts, add
referrerpolicyto external assets, addrel="noopener noreferrer"to external links. - Update the recipient list in the disclosure to state observed recipients (with categories you verified); leave purposes/transfer basis as marked gaps.
- Never remove a payment, fraud, captcha, or security dependency to "reduce third parties".
Must not claim
"No third-party sharing", "we never share your data", "data stays in the EU", or anything about vendor contracts, processor status, or transfer mechanisms. Never label a vendor compliant or non-compliant.
Verify
Re-run the runtime map; confirm removed vendors no longer appear, replacements work at desktop and 375px, and the disclosure and observed recipient list agree. Confirm no functionality regressed (font swap, map, embed still work).
Escalate
- Personal data or sensitive-category data reaching a third party: REVIEW REQUIRED (
analytics-privacy,regulated-domain-triggersif health/finance/children). - Cross-border transfers, processor agreements, vendor security posture: legal/security review.
- Payment or identity vendors: hand to
payments-readiness.
No change is valid when
The site loads only first-party resources and the disclosure says so, or the third parties are necessary, disclosed, and minimal. Report the list and the recheck trigger; do not swap a working vendor for its own sake.
In this repository54 other files it gives its agents.
- wcag-readinessSkill
- admin-audit-logSkill
- admin-authorizationSkill
- admin-dashboardSkill
- payments-readinessSkill
- subscription-readinessSkill
- ai-features-readinessSkill
- analytics-privacySkill
- consent-managementSkill
- consumer-protection-readinessSkill
- cookie-and-storage-auditSkill
- data-flow-mappingSkill
- data-rightsSkill
- email-complianceSkill
- jurisdiction-applicabilitySkill
- legal-identity-noticesSkill
- minors-readinessSkill
- policy-consistencySkill
- privacy-policySkill
- privacy-readinessSkill
- regulated-domain-triggersSkill
- terms-of-serviceSkill
- user-content-safetySkill
- compliance-allSkill
- compliance-diffSkill
- design-system-reconnaissanceSkill
- discoverability-allSkill
- launch-allSkill
- launch-verificationSkill
- production-allSkill
- quality-allSkill
- site-reconnaissanceSkill
- trust-allSkill
- search-console-readinessSkill
- seo-readinessSkill
- social-sharingSkill
- structured-dataSkill
- multilingual-readinessSkill
- rtl-readinessSkill
- content-trustSkill
- error-pagesSkill
- failure-resilienceSkill
- faq-readinessSkill
- forms-readinessSkill
- launch-identitySkill
- legal-navigationSkill
- link-integritySkill
- mobile-readinessSkill
- performance-readinessSkill
- public-supportSkill
- dependency-securitySkill
- deployment-cleanupSkill
- security-headersSkill
- web-securitySkill
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.

