From spamhole
Push the user's accumulated tracking-pixel + ad-tracker domains from the SpamHole corpus into a self-hosted AdGuard Home instance, using the credentials configured by adguard-configure. Network-layer block — every device on the LAN benefits, not just one mailbox. Use when the user wants to apply their corpus findings at the DNS layer.
How this skill is triggered — by the user, by Claude, or both
Slash command
/spamhole:adguard-pushThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Take what SpamHole has learned from the user's mail and turn it into a network-wide DNS block on AdGuard Home.
Take what SpamHole has learned from the user's mail and turn it into a network-wide DNS block on AdGuard Home.
Standard resolver. Read <corpus>/config.json → adguard. If missing, run adguard-configure first.
If password_ref is a 1Password URI, resolve it via op read <ref> (the op-vault plugin handles this if installed; otherwise call op directly).
tracking, ads, or both (default).replace (overwrite SpamHole's section of user rules) or append (additive). Default replace for custom-rules strategy, since dedup matters at the DNS layer.min frequency.! ===== SpamHole start (managed — do not edit) =====
! Generated: <ISO timestamp>
||tracking.example.com^
||other.example.com^
! ===== SpamHole end =====
GET <base>/control/filtering/status (the user_rules field).POST <base>/control/filtering/set_rules with body { "rules": ["...", "..."] }.hosted_url location (Cloudflare R2, gist, local nginx — depends on adguard.list_name/hosted_url config).POST /control/filtering/add_url with { "name": "<list_name>", "url": "<hosted_url>", "whitelist": false }.POST /control/filtering/refresh with { "whitelist": false }.<corpus>/data/adguard-push-log.json: { pushed_at, source, count, strategy }.set_rules is destructive — it replaces ALL user rules. The start/end marker pattern above is essential to avoid wiping the user's hand-curated rules.list-manage.com also serves Mailchimp's hosted preference centres). The export-dns-blocklist skill flags these — surface those warnings here and let the user opt out per-domain before pushing.mcp/adguard-home MCP is wired in via .mcp.json, prefer its tools over raw HTTP calls. The MCP gives idempotent semantics that direct REST does not.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin spamhole