# Send Adguard Test to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "adguard-test",
    "name": "Adguard Test",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/foxleoly/adguard-test",
    "canonicalUrl": "https://clawhub.ai/foxleoly/adguard-test",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/adguard-test",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=adguard-test",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "README.md",
      "SECURITY_AUDIT.md",
      "SKILL.md",
      "TEST_REPORT.md",
      "clawhub.json",
      "index.js"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "adguard-test",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-29T10:08:35.526Z",
      "expiresAt": "2026-05-06T10:08:35.526Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=adguard-test",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=adguard-test",
        "contentDisposition": "attachment; filename=\"adguard-test-1.2.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "adguard-test"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/adguard-test"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/adguard-test",
    "downloadUrl": "https://openagent3.xyz/downloads/adguard-test",
    "agentUrl": "https://openagent3.xyz/skills/adguard-test/agent",
    "manifestUrl": "https://openagent3.xyz/skills/adguard-test/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/adguard-test/agent.md"
  }
}
```
## Documentation

### AdGuard Home Skill

🛡️ Query AdGuard Home instances for DNS statistics, blocked domains, and client activity
🛡️ 查询 AdGuard Home 实例的 DNS 统计、拦截域名和客户端活动

### Features | 功能特性

✅ Multi-instance support | 支持多实例配置
✅ Real-time DNS query statistics | 实时 DNS 查询统计
✅ Blocked domains leaderboard | 拦截域名排行
✅ Active client analysis | 活跃客户端分析
✅ Health status check | 健康状态检查
✅ Service status monitoring | 服务状态监控
✅ DNS configuration details | DNS 配置详情
✅ Filter rules inspection | 过滤规则和列表
✅ Recent query log | 最近查询日志
✅ TLS/encryption status | TLS/加密状态

### Method 1: ClawHub CLI (Recommended) | 方法 1: ClawHub CLI（推荐）

# Install from ClawHub registry | 从 ClawHub 安装
clawhub install adguard-home

# Verify installation | 验证安装
clawhub list | grep adguard-home

### Method 2: Manual Install | 方法 2: 手动安装

# Clone the repository | 克隆仓库
git clone https://github.com/foxleoly/adguard-home-skill.git
cd adguard-home-skill

# Copy to your skills directory | 复制到技能目录
cp -r . ~/.openclaw/workspace/skills/adguard-home/

### Post-Installation Setup | 安装后配置

Create configuration file | 创建配置文件:
# Edit adguard-instances.json | 编辑配置文件
vim ~/.openclaw/workspace/adguard-instances.json



Add your instances | 添加实例:
{
  "instances": {
    "dns1": {
      "url": "http://192.168.1.1:80",
      "username": "admin",
      "password": "your-password"
    }
  }
}



Secure the config file | 保护配置文件:
chmod 600 ~/.openclaw/workspace/adguard-instances.json



Test the skill | 测试技能:
/adguard stats dns1

### Basic Commands | 基础命令

# Statistics & Monitoring | 统计与监控
/adguard stats [instance]           # DNS statistics | DNS 统计
/adguard top-clients [instance]     # Top 10 active clients | 活跃客户端 Top 10
/adguard top-blocked [instance]     # Top 10 blocked domains | 被拦截域名 Top 10
/adguard health [instance]          # Health check | 健康检查
/adguard status [instance]          # Service status | 服务状态

# Configuration & Rules | 配置与规则
/adguard dns-info [instance]        # DNS configuration | DNS 配置详情
/adguard filter-rules [instance]    # Filter rules and lists | 过滤规则和列表
/adguard clients [instance]         # Configured clients | 已配置的客户端
/adguard tls-status [instance]      # TLS/encryption status | TLS/加密状态

# Query Log | 查询日志
/adguard querylog [instance] [n]    # Recent n queries (default: 10) | 最近 n 条查询

### Examples | 命令示例

# Query dns1 instance statistics | 查询 dns1 实例的统计
/adguard stats dns1

# Check service status | 检查服务状态
/adguard status dns1

# View DNS configuration | 查看 DNS 配置
/adguard dns-info dns1

# View filter rules | 查看过滤规则
/adguard filter-rules dns1

# View last 20 DNS queries | 查看最近 20 条 DNS 查询
/adguard querylog dns1 20

# Check TLS status | 检查 TLS 状态
/adguard tls-status dns1

# If no instance specified, uses the first configured instance | 不指定实例则使用第一个
/adguard stats

### Output Examples | 输出示例

stats command | stats 命令：

📊 AdGuard Home Statistics (dns1)
Total DNS Queries: 141,647
Blocked Requests: 32,540 (23.0%)
Avg Response Time: 0.005ms

status command | status 命令：

🔧 AdGuard Home Status (dns1)
Version: v0.107.72
Running: ✅ Yes
Protection: ✅ Enabled
DNS Port: 53
HTTP Port: 1080
Language: zh-cn
DHCP Available: ✅ Yes

dns-info command | dns-info 命令：

🌐 DNS Configuration (dns1)
Protection: ✅ Enabled
Rate Limit: 20 req/s
Upstream Mode: parallel
Cache: ✅ 4MB
DNSSEC: ❌ Disabled
IPv6: ✅ Enabled

Upstream DNS Servers:
  1. https://dns.alidns.com/dns-query
  2. 192.168.1.1:53
  3. 8.8.8.8:53

filter-rules command | filter-rules 命令：

🛡️ Filter Rules (dns1)
Filtering: ✅ Enabled
Update Interval: 12 hours
User Rules: 6 custom rules

Filter Lists:
  1. ✅ AdAway Default Blocklist (6540 rules)
  2. ✅ gh_100M_block (1110461 rules)
  3. ✅ 三角洲行动黑名单 (78126 rules)

querylog command | querylog 命令：

📜 Recent DNS Queries (dns1) - Last 5 entries

1. [12:26:44 AM] 🚫 BLOCKED api.telegram.org (192.168.145.188)
2. [12:26:43 AM] 🚫 BLOCKED self.events.data.microsoft.com (192.168.145.123)
   Rule: ||events.data.microsoft.com^
3. [12:26:42 AM] ✅ OK open.feishu.cn (192.168.145.188)

### 🔒 Security Best Practices | 安全最佳实践

⚠️ Important: Do not store plaintext credentials in configuration files. Use one of these secure methods:
⚠️ 重要： 不要在配置文件中存储明文凭证。请使用以下安全方式之一：

Option 1: Environment Variables (Recommended) | 方案一：环境变量（推荐）

Set environment variables before running commands:
运行命令前设置环境变量：

export ADGUARD_URL="http://192.168.145.249:1080"
export ADGUARD_USERNAME="admin"
export ADGUARD_PASSWORD="your-secure-password"

Option 2: 1Password CLI | 方案二：1Password CLI

Use op read to inject secrets at runtime:
使用 op read 在运行时注入密钥：

export ADGUARD_PASSWORD=$(op read "op://vault/AdGuard/credential")

Option 3: Workspace Config (Local Development Only) | 方案三：工作区配置（仅本地开发）

For local development, create adguard-instances.json in your current workspace root only:
本地开发时，仅在当前工作区根目录创建 adguard-instances.json：

{
  "instances": {
    "dns1": {
      "url": "http://192.168.145.249:1080",
      "username": "admin",
      "password": "your-secure-password"
    }
  }
}

⚠️ Never commit this file to version control. Add it to .gitignore.
⚠️ 切勿将此文件提交到版本控制。将其添加到 .gitignore。

### Configuration Parameters | 配置参数

ParameterDescriptionExampleurlAdGuard Home URL (with port)http://192.168.145.249:1080usernameAdmin usernameadminpasswordAdmin password (use env var or secrets manager)your-secure-password

参数说明示例urlAdGuard Home 访问地址（含端口）http://192.168.145.249:1080username管理员用户名adminpassword管理员密码（建议使用环境变量或密钥管理）your-secure-password

### Technical Details | 技术实现

Authentication | 认证方式: Cookie-based (POST /control/login)
Data API | 数据接口: GET /control/* endpoints
Runtime | 运行环境: Node.js (ES Module)
Entrypoint | 入口文件: index.js

### API Endpoints Used | 使用的 API 端点

/control/stats - Statistics data | 统计数据
/control/status - Service status | 服务状态
/control/dns_info - DNS configuration | DNS 配置
/control/filtering/status - Filter rules | 过滤规则
/control/querylog - Query log | 查询日志
/control/clients - Client management | 客户端管理
/control/tls/status - TLS status | TLS 状态

### FAQ | 常见问题

Q: Error "No AdGuard instances configured"?
Q: 提示 "No AdGuard instances configured"？

A: Ensure environment variables are set (ADGUARD_URL, ADGUARD_USERNAME, ADGUARD_PASSWORD) or create adguard-instances.json in your current workspace root.
A: 请确保已设置环境变量（ADGUARD_URL、ADGUARD_USERNAME、ADGUARD_PASSWORD），或在当前工作区根目录创建 adguard-instances.json。

Q: Authentication error when querying?
Q: 查询失败，返回认证错误？

A: Verify username/password in config file. Ensure AdGuard Home service is running.
A: 检查配置文件中的用户名密码是否正确，确认 AdGuard Home 服务正常运行。

Q: How to add more instances?
Q: 如何添加更多实例？

A: Add new key-value pairs to the instances object in adguard-instances.json.
A: 在 adguard-instances.json 的 instances 对象中添加新的键值对即可。

Q: querylog shows no data?
Q: querylog 没有数据？

A: Ensure query log is enabled in AdGuard Home settings (Settings → DNS Settings → Query log).
A: 确保 AdGuard Home 设置中已启用查询日志（设置 → DNS 设置 → 查询日志）。

### v1.2.1 (2026-02-25) - Credential Security 🔐

Security Improvements | 安全改进：

✅ Removed plaintext credential storage - No longer instructs creating config files with admin credentials
✅ Environment variable support - Secure credential injection via ADGUARD_URL, ADGUARD_USERNAME, ADGUARD_PASSWORD
✅ 1Password integration - Supports secrets management via op read
✅ Removed multi-path search - No longer searches ~/.openclaw-*/workspace/ paths
✅ Workspace-only config - Local config file only checked in skill directory (dev use)
✅ Updated documentation - Security best practices prominently featured

### v1.2.0 (2026-02-24) - Security Hardening 🔒

Security Improvements | 安全改进：

✅ Removed command injection vulnerability - Replaced execSync + curl with native HTTPS client
✅ Input validation - Sanitized instance names, commands, and parameters
✅ Command whitelist - Only allowed commands can be executed
✅ URL validation - Verified URL format before making requests
✅ Parameter bounds - Limited querylog limit to 1-100 entries
✅ No shell escaping issues - Pure JavaScript HTTP requests

Technical Changes | 技术变更：

Removed dependency on child_process and external curl commands
Implemented native http/https module for all API calls
Added cookie-based session management
Improved error handling and validation

### v1.1.0 (2026-02-24) - Enhanced

New Commands | 新增命令：

status - Service status (version, protection, ports) | 服务状态（版本、保护、端口）
dns-info - DNS configuration details | DNS 配置详情
filter-rules - Filter rules and lists | 过滤规则和列表
querylog [n] - Recent DNS queries | 最近 DNS 查询
clients - Configured clients | 已配置的客户端
tls-status - TLS/encryption status | TLS/加密状态

Improvements | 改进：

Bilingual documentation (Chinese/English) | 中英文双语文档
Better error handling | 更好的错误处理
Enhanced output formatting | 增强的输出格式

### v1.0.0 (2026-02-24) - Initial

Features | 功能：

stats/top-clients/top-blocked/health commands | 支持 stats/top-clients/top-blocked/health 命令
Multi-instance configuration support | 多实例配置支持
ES Module implementation | ES Module 实现

### Author | 作者

Leo Li (@foxleoly)
License: MIT
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: foxleoly
- Version: 1.2.1
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-29T10:08:35.526Z
- Expires at: 2026-05-06T10:08:35.526Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/adguard-test)
- [Send to Agent page](https://openagent3.xyz/skills/adguard-test/agent)
- [JSON manifest](https://openagent3.xyz/skills/adguard-test/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/adguard-test/agent.md)
- [Download page](https://openagent3.xyz/downloads/adguard-test)