Asuswrt-Merlin-AdGuardHome-Installer
The Official Installer of AdGuardHome for Asuswrt-Merlin
Install / Use
npx skills add jumpsmm7/Asuswrt-Merlin-AdGuardHome-InstallerInstalls into whichever agent you are using.
AGENTS.md
OpenAI Codex agent instructions
Quality Score
Category
AutomationSupported Platforms
Our assessment of Asuswrt-Merlin-AdGuardHome-Installer
Asuswrt-Merlin-AdGuardHome-Installer scores 64/100 on our quality scale, 2718th of 2,883 Automation skills we index.
Its AGENTS.md is 31 KB long, well organised into 20 sections with 7 code examples: a thorough specification that gives an agent plenty to work with.
It has no GitHub stars yet, so there is no community track record; judge it on its content.
Maintenance, license and trust
- We could not determine when the repository was last updated.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 68/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit â read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.
Automated pattern scan on 2026-10-26. It catches known dangerous patterns, not every risk â read a skill before letting an agent act on it.
Asuswrt-Merlin-AdGuardHome-Installer compared with similar skills
All 4 of these similar skills score higher than Asuswrt-Merlin-AdGuardHome-Installer; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| Asuswrt-Merlin-AdGuardHome-Installer (this skill)by jumpsmm7 | 64 | 0 | â | AGENTS.md |
| Agent-Reachby Panniantong | 100 | 103.3k | 1d ago | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 89.9k | today | MCP Server |
| rufloby ruvnet | 100 | 79.5k | today | MCP Server |
| ui-ux-pro-maxby nextlevelbuilder | 100 | 137.2k | 11d ago | SKILL.md |
Frequently asked questions
- How do I install Asuswrt-Merlin-AdGuardHome-Installer?
- Run
npx skills add jumpsmm7/Asuswrt-Merlin-AdGuardHome-Installer. The install tabs above show the steps for each supported agent. - Which AI agents does Asuswrt-Merlin-AdGuardHome-Installer work with?
- It is written for OpenAI Codex and Amazon Q, as a AGENTS.md file. Other agents that read the same format can often use it too.
- Is Asuswrt-Merlin-AdGuardHome-Installer safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It declares no license and scores 68/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is Asuswrt-Merlin-AdGuardHome-Installer still maintained?
- We could not determine when the repository was last updated.
Skill content
View source on GitHubAGENTS.md
These instructions apply to the entire repository unless a deeper AGENTS.md overrides them.
This file is the canonical repository guardrail set for all coding and review agents, including Codex, Amazon Q Developer, CodeRabbit, and Qodo. Agent-specific configuration may add workflow or provider details, but it must not weaken or contradict these rules. When agent-specific guidance conflicts with this file, this file wins.
Primary target
This repository targets POSIX /bin/sh scripts running under BusyBox ash on Asuswrt-Merlin routers with Entware installed for the AdGuardHome installer runtime.
Assume:
export LC_ALL=C
PATH contracts by script:
-
installer: Stock directories followed by inherited PATH:
export PATH="/sbin:/bin:/usr/sbin:/usr/bin${PATH:+:$PATH}" -
AdGuardHome.sh, S99AdGuardHome, rc.func.AdGuardHome: Stock plus Entware directories without inherited PATH:
export PATH="/sbin:/bin:/usr/sbin:/usr/bin:/opt/sbin:/opt/bin:/opt/usr/sbin:/opt/usr/bin"
Router stock paths must take priority over Entware paths. The installer appends inherited PATH to preserve user environment during interactive setup. Runtime service scripts (AdGuardHome.sh, S99AdGuardHome, and rc.func.AdGuardHome) use a fixed PATH without inheritance to ensure consistent service behavior regardless of the invoking environment.
Shared review and editing posture
All agents must use the same finding threshold and investigation guardrails.
- Inspect the current diff first and verify each proposed finding against the current code before reporting or fixing it.
- Read only the directly touched files and the nearest callers, callees, configuration, tests, and lifecycle paths needed to prove the behavior.
- Report a finding only when there is a concrete, reachable failure condition and a practical effect on correctness, security, compatibility, router state, service lifecycle, reliability, or meaningful performance.
- Do not raise speculative, theoretical, style-only, naming, formatting, wording, or preference findings unless they create a real defect.
- Do not duplicate findings already enforced reliably by existing automated checks unless the check exposes a distinct root cause that still requires code changes.
- Group repeated instances of the same underlying problem instead of reporting them separately.
- Do not fill a finding quota. If no high-confidence issue exists, report no finding.
- Every finding should identify the exact failure condition, the practical effect, and a minimal compatible correction.
- Prefer minimal patches over broad refactors and do not reformat or rewrite unrelated code.
- When resolving existing review feedback, re-verify every finding against the current branch, fix only still-valid issues, and skip obsolete findings with a brief reason.
- Do not run expensive, network-heavy, installation, firmware-changing, or destructive commands during review unless the user explicitly asks or they are required to validate the changed behavior.
- Do not claim a test or command passed unless it was actually run successfully.
Prioritize findings in this order:
- Security regressions.
- Service interruption, rollback, cleanup, or restore-path regressions.
- BusyBox
ashor POSIX/bin/shcompatibility failures. - Router-specific failures involving NVRAM, firewall, WAN, DNS, VPN, IPSET, or service state.
- Install, upgrade, restore, or uninstall failures.
- Performance regressions on constrained router hardware.
- Maintainability concerns only when they can reasonably cause a defect.
Shell compatibility rules
Do not use Bash-only features unless the user explicitly requests Bash.
Avoid:
[[ ... ]]- arrays or associative arrays
${var//old/new}- process substitution
- here-strings
sourcemapfile/readarrayselectcoprocset -o pipefail- Bash regex matching with
=~
Use POSIX-safe constructs:
[ ... ]case ... esacwhile read -r line; do ... done- command substitution with
$(...) - functions as
name() { ...; }
Shell syntax, quoting, and punctuation contract
These are hard requirements for every coding or review agent when writing, suggesting, or evaluating shell code in this repository. Do not apply Python, JavaScript, Bash, or desktop-Linux punctuation conventions to POSIX shell.
Tokenization and separators:
- Shell command arguments are separated by whitespace, not commas. Do not write Python/C-style calls such as
printf '%s\n', "${value}"orcommand arg1, arg2unless the comma is literal data required by the called program. - Preserve commas that belong to an embedded language or command syntax. For example, AWK function calls require commas:
substr(value, 1, 3)andsplit(value, parts, "/"). - Variable assignments use
NAME=valuewith no spaces around=. UseNAME="${value}"when expansion is needed. - Separate commands with a newline or
;. Use&&or||only when success/failure chaining is intentional. if,elif,while,until, andforheaders must have a separator beforethenordo, normally; thenor; dowhen kept on one line.- Do not omit required terminators:
fi,done,esac, and;;for completedcasearms. - Do not add commas between
casepatterns, command arguments, test operands, function arguments at the shell level, or redirections unless the invoked command's own syntax requires them.
Quoting and expansion:
- Quote parameter expansions by default: use
"${var}", not$var, unless field splitting or pathname expansion is deliberately required. - Quote command substitutions when the result must remain one argument:
"$(command)". - Quote path variables and redirection targets:
>"${file}",rm -f "${file}",cd "${dir}". - Use double quotes when expansions must occur and single quotes for literal text that must not expand.
- Keep quote pairs balanced. Never leave unmatched
'or"characters in generated shell. - Use braces around parameter names when adjacent text could be parsed as part of the variable name:
"${name}_suffix". - Under
set -u, use forms such as${var:-}when an unset variable is valid and expected. - Do not single-quote text that is supposed to expand variables or command substitutions.
- Do not leave wildcard characters unquoted unless pathname expansion is intended.
casepatterns are an exception when pattern matching is intentional. - Keep
printfformat strings literal and pass data as separate arguments, for exampleprintf '%s\n' "${value}". Do not use user-controlled data as the format string.
Tests, conditionals, and control flow:
- POSIX test syntax requires spaces:
[ "${value}" = "expected" ], not["${value}"="expected"]. - Use
=and!=for string comparisons in[ ... ]; use-eq,-ne,-lt,-le,-gt, and-gefor integer comparisons. - Prefer
[ -n "${value:-}" ]and[ -z "${value:-}" ]for explicit non-empty/empty checks. - Use
case "${value}" in ... esacfor multi-pattern matching instead of Bash[[ ... =~ ... ]]. - Use
read -runless backslash interpretation is intentionally required. - Do not rely on variables modified inside a pipeline-fed
whileloop being available afterward; pipeline components may run in subshells. - When a command substitution's status controls the next action, do not hide it behind
local NAME="$(command)"; declare the local first and assign separately. Do not flag a combined declaration when the substitution status is intentionally ignored.
Functions, redirections, and here-documents:
- Define functions as
name() { ...; }. Keep a command separator before the closing}. - Attach file-descriptor numbers directly to redirection operators, for example
2>/dev/nulland2>&1. - Quote here-document delimiters (
<<'EOF') when the body must remain literal. Use an unquoted delimiter only when parameter or command expansion in the body is intentional. - Preserve redirection order when it matters;
>"${file}" 2>&1is not interchangeable with2>&1 >"${file}". - Keep temporary-file creation, cleanup traps, and ownership/permission handling compatible with BusyBox and the existing repository patterns.
Asuswrt-Merlin shell style:
- Preserve the surrounding file's tab-based indentation for shell blocks; do not mass-convert indentation.
- Keep one logical command per line unless a short
&&/||chain clearly improves the existing code. - Use LF line endings, no trailing whitespace, and exactly one trailing newline at end of text files.
- Preserve nearby declaration/order/style conventions unless changing them is necessary for correctness.
- Keep patches narrowly scoped. Do not reformat unrelated code while fixing shell syntax.
Embedded-language safety:
- Shell files in this repository contain AWK,
sed,jq, regex, YAML, and JSON fragments. Validate the syntax of the embedded language separately from the outer shell quoting. - Do not remove required AWK commas, regex escapes, JSON commas/quotes, or YAML spacing while adjusting shell quotes.
- When an embedded program is single-quoted, remember that shell variables do not expand inside it unless values are passed explicitly, for example with
awk -v. - When changing nested quotes, verify both layers: the shell must parse, and the embedded expression must still receive the intended characters.
General shell rules:
- Quote variables by default.
- Prefer
"${var}", not$var, unless unquoted expansion is intentional. - Use
${var:-}when an unset variable could be possible. - Use
printf, notecho -e. - Use
whichfor router-targeted command lookups. - Avoid process-heavy code inside loops.
- Avoid unquoted glob expansion unless intentional.
- Preserve the existing coding style when practical.
- Use uppercase for global/config variables.
- Use lowercase for local loop variables where practical.
localis acceptable when consistent with existing BusyBoxashscripts in this repository.
Entware assumptions
Entware is an expected dependency for this installer. Existing installer/service code may use /opt, /opt/bin, /opt/sbin, /opt/usr/bin, /opt/usr/sbin, and opkg where that matches current project behavior.
Do not add unrelated Entware dependencies casually. If a new Entware package is needed, update the allowed package list in this section in the same change, clearly separate stock-router code from Entware-dependent code, and include or preserve the required opkg install ... step.
Installer-managed Entware package installations use the canonical option set --force-depends --force-overwrite --force-reinstall. Preserve all three options for every ensure_opkg_package call, direct repair install, user-facing install command, and preflight install hint, including jq-full.
SHA-256 preflight and runtime enforcement must use the shared functional sha256sum_available() probe. Accept a working stock/PATH sha256sum, /opt/bin/sha256sum when Entware is mounted, the BusyBox SHA-256 applet, or stock OpenSSL. Do not gate the functional preflight probe on Entware package status; only run the coreutils-sha256sum package diagnostic when Entware is available and no supported implementation works. After changing installer, regenerate both installer.md5sum and installer.sha256sum.
Allowed Entware packages currently referenced by the installer are:
apacheapache-utilscolumncoreutils-sha256sumgogo_nohfjq-fullpython3python3-bcrypt
Default to router stock paths and BusyBox applets outside installer-managed Entware paths and package-install flows.
BusyBox environment
Target BusyBox version: BusyBox v1.25.1.
Treat BusyBox applets as limited implementations, not GNU coreutils.
Avoid GNU-only flags unless confirmed for BusyBox v1.25.1.
Available BusyBox applets include: ash, awk, basename, cat, chmod, chown, cp, `cro
Truncated for display â read the full file on GitHub.
Related Skills
Agent-Reach
103.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu â one CLI, zero API fees.
Scrapling
89.9kđˇī¸ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
ruflo
79.5kđ The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
ui-ux-pro-max
137.2kUI/UX design intelligence for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation.
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit â see the Safety scan above for what the skill file itself contains.
