{"id":"87b20ba4-3c81-44f1-80ba-1bc2887f02f0","slug":"aghome-blocks","kind":"skill","name":"aghome-blocks","summary":"A curated collection of domain blocklists optimized for AdGuard Home. This repository provides regularly updated, clean, and categorized domain lists focused on blocking ads, tracking, malware, teleme","owner":"ruhex","repoUrl":"https://github.com/ruhex/aghome-blocks","license":"MIT","licenseTier":"permissive","trust":"community","stars":2,"match":null,"fewStars":true,"format":"skill","createdAt":"2025-11-30T19:41:54.000Z","addedAt":"2026-10-21T22:13:56.697Z","logoUrl":"https://avatars.githubusercontent.com/u/15570482?u=3be6c79e85031757d83014dd4c42b38c46fc13a9&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["writing"],"tags":[],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-26T21:23:38.738Z","sample":false,"url":"https://conduits.dev/tools/aghome-blocks","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# aghome-blocks\n\nCurated AdGuard Home blocklists plus an agent skill that keeps them\nprecise: analyze live DNS query logs, classify domains for privacy and\nsecurity risk, edit the lists with minimal diff, and roll changes out\nsafely.\n\nMandate: **maximum privacy and security with minimum breakage** —\na precise blocklist, not a long one.\n\n## Repository layout\n\n```text\nSKILL.md                    agent skill (Agent Skills format): the full workflow\nreferences/analysis-spec.md analysis methodology v3.0 (evidence model, risks, JSON schema)\nscripts/fetch_querylog.py   server-side querylog aggregation over SSH\nscripts/classify_domains.py rule-based classifier (v3.0 schema)\nscripts/enrich_review.py    DNS/RDAP/URLhaus enrichment for REVIEW domains\nlists/blocklist.txt         main curated blocklist (published)\nlists/                      legacy lists (live subscriptions until switchover)\nanalysis/                   local artifacts, gitignored\n```\n\n## Lists\n\n| File | Purpose |\n|------|---------|\n| `lists/blocklist.txt` | merged curated list: ads, counters, telemetry, vendor telemetry (Xiaomi/HiHonor/360), scam suspects, torrent trackers, per-analysis findings |\n| `lists/filter_2.txt`, `lists/telemetry-blocklist.txt` | legacy lists, still subscribed by the live AGH instance until switchover |\n\nThe blocklist deliberately does **not** touch approved services - they\nare covered by `$important` allowlist entries in AGH user rules and must\nnever be blocked. The specific list of approved services is\nintentionally not public (see `SKILL.md`, \"Whitelist policy\").\n\n## Using the agent\n\nOpen this repository with an [Agent Skills](https://agentskills.io)\ncompatible assistant and follow `SKILL.md`. Short version:\n\n```bash\n# 1. aggregate query logs from the AGH host (secrets via environment)\nAGH_SSH=root@dns-host AGH_DATA_DIR=/var/lib/docker/volumes/adguardhome-work/_data/data \\\n    DAYS=30 scripts/fetch_querylog.py analysis/allowed_domains.json\n\n# 2. classify domains (analysis-spec.md methodology)\nscripts/classify_domains.py analysis/allowed_domains.json analysis/dns-analysis.json\n\n# 3. enrich the suspicious REVIEW subset (RDAP, DNS resolution)\nscripts/enrich_review.py analysis/dns-analysis.json 15\n\n# 4. curate lists/blocklist.txt from the findings, then commit and push;\n#    AdGuard Home pulls the raw URL on its refresh interval\n```\n\nCredentials live only in the environment (`AGH_SSH`, `AGH_URL`,\n`AGH_USER`, `AGH_PASS`, optional `URLHAUS_API_KEY`) and are never\ncommitted.\n\n## Security notes\n\n- The repo is public: no hosts, credentials, or operator-specific\n  domains belong in commits. Operator-owned domains go to the\n  gitignored `analysis/operator-domains.txt`.\n- Some upstream blocklists (e.g. AdGuard DNS filter) contain `@@`\n  allowlist entries for certain ad/affiliate domains; user block rules\n  cannot override those — use AGH DNS rewrites for the exceptions\n  (see `SKILL.md`, \"Operational gotchas\").\n\n## License\n\nSee [LICENSE](LICENSE).\n"}