From spamhole
Strip per-recipient identifiers from the user's tracking inventories and prepare a redacted contribution suitable for opening a PR against collaborative public anti-tracking lists (EasyPrivacy, hagezi, oisd, Pi-hole community, AdGuard's tracker filter). Outputs a sanitised diff plus a draft PR description. Does NOT open the PR automatically — the user reviews and submits.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin spamholeThis skill uses the workspace's default tool permissions.
Help the user share their findings with public anti-tracking efforts without leaking their own email or recipient IDs.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
Help the user share their findings with public anti-tracking efforts without leaking their own email or recipient IDs.
Standard resolver.
easyprivacy (https://github.com/easylist/easylist) — Adblock Plus syntaxhagezi (https://github.com/hagezi/dns-blocklists) — domain listsoisd (https://oisd.nl) — submit via their form, not a PRpihole (https://github.com/pi-hole) — community blocklist reposadguard (https://github.com/AdguardTeam/AdguardFilters) — filter ruleslocal — just produce the sanitised file, no upstream targettracking, ads, or both.N=3, M=2 to keep noise out.Aggregate from tracking-domains.json + ad-trackers.json per min evidence.
Redact: strip every url field, recipient, sender_email, and any per-message metadata. Keep only:
domaintype (tracking_pixel | ad_tracker | click_tracking)evidence_count (how many distinct messages)distinct_senders_countfirst_seen_date, last_seen_dateFormat for the target list's syntax:
||tracking.example.com^$third-party
$image modifier for pixels.Write to <corpus>/exports/contribution-<target>-<YYYYMMDD>.txt.
Draft a PR description (write to <corpus>/exports/contribution-<target>-<YYYYMMDD>-PR.md):
## Add N tracking-pixel domains observed in personal corpus
These domains were observed embedding tracking pixels or ad beacons in
unsolicited / commercial email over <date range>. Each domain met the
contribution threshold of ≥3 distinct messages from ≥2 distinct senders.
Source: personal SpamHole corpus, redacted (no recipient or per-message
identifiers retained).
### Domains
- tracking.example.com — tracking_pixel — 7 messages, 4 senders
- ...
Print the path of both files and a copy of the recommended gh pr create command (do NOT run it — let the user review first). For oisd (form-based), point at the submission URL instead.
.eml filesIf any of those appear in the contribution diff, abort and report the leak.