Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add air-gapped/skills --skill ubuntu-netplangit clone --depth 1 https://github.com/air-gapped/skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/air-gapped/skills/ubuntu-netplan)<a href="https://agentmods.dev/skills/air-gapped/skills/ubuntu-netplan"><img src="https://agentmods.dev/badge/skills/air-gapped/skills/ubuntu-netplan/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/air-gapped/skills/ubuntu-netplan"><img src="https://agentmods.dev/badge/skills/air-gapped/skills/ubuntu-netplan.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00116 | $0.02573 |
| Opus 5.5 | $0.00046 | $0.01029 |
| Sonnet 5.5 | $0.00023 | $0.00515 |
| Haiku 4.5 | $0.00012 | $0.00257 |
Grade B, and why
ubuntu-netplan scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Asks for rootmediumPrivilege escalation
A mod that escalates privileges can change anything on the machine, not only the project.
`chmod 600 /etc/netplan/*.yaml`, root-owned. Files netplan writes itself How it starts
The opening of the file, as written. The whole thing — 223 lines — stays where its author put it; the contents beside it link to each section on GitHub.
ubuntu-netplan
Netplan is Ubuntu's network-configuration abstraction: declarative YAML under
/etc/netplan/ that netplan renders to a backend — systemd-networkd (servers,
the default) or NetworkManager (desktop) — and uses to bring the network up.
This skill is authoring-led (produce correct YAML from a description) with a strong
validation/debug path, aimed at on-prem / air-gapped Ubuntu Server LTS.
Netplan is also the shared network substrate for the sibling skills: cloud-init's
network-config v2 is netplan format, and an autoinstall network: block is
netplan v2. See Boundaries at the end.
Authoring workflow
- Confirm target & renderer. Server →
renderer: networkd(the default). Desktop/Wi-Fi →renderer: NetworkManager. Check the running version withnetplan info(24.04 ships ~1.0.x, 26.04 tracks 1.2.x — see version notes). - Pick the device type(s):
ethernets,bonds,bridges,vlans,vrfs,tunnels,dummy-devices,virtual-ethernets,wifis,modems. Stack them bottom-up: ethernets → bond → vlans-on-bond → bridges-on-bond/vlan. - Write the YAML under
/etc/netplan/, choosing a filename that orders correctly (see precedence). Use 2-space indentation, never tabs. - Validate without applying:
netplan generate(fails loudly on errors). - Apply safely. On a remote/SSH host use
netplan try(auto-rollback), never a blindnetplan apply— see "Apply safely". - Verify:
netplan status --all,ip addr,ip route, and reachability.
The envelope
Every file is wrapped in:
network:
version: 2 # only 2 is accepted (v1 does not exist for netplan)
renderer: networkd # default if omitted; or NetworkManager
ethernets: { ... }
bonds: { ... }
# ...other device types
File model & precedence (a real source of bugs)
- Files live in
/etc/netplan/*.yaml(also/run/netplan/>/etc/netplan/>/lib/netplan/by directory priority). - Same filename in a higher-priority dir fully replaces the lower one.
- Different filenames are merged in lexicographic order of the basename, across
all directories. So
20-foo.yamloverrides10-bar.yamleven if10-bar.yamlsits in a higher-priority directory. - Per-key merge: scalars → later wins; sequences are concatenated, not
replaced (two files each listing
addresses:will accumulate both — a classic "why do I have an extra IP?" trap); mappings → merged key by key. - Conventional files commonly present:
50-cloud-init.yaml(written by cloud-init),00-installer-config.yaml(Subiquity),90-NM-<uuid>.yaml(NetworkManager desktop). Use a high number like99-*.yamlfor hand overrides. - Permissions: netplan only warns if a file is group/other-readable; it does
not refuse or auto-fix. YAML can hold Wi-Fi/WireGuard/EAP secrets, so
chmod 600 /etc/netplan/*.yaml, root-owned. Files netplan writes itself (netplan set) are already0600.
What ships with it
7 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 223 lines · 116 tokens per session scan B d0333ddb1cc4
ubuntu-netplan is a skill published in the GitHub repository air-gapped/skills (5 stars, last pushed 2d ago), licensed MIT. It adds 116 tokens to every session and 2,573 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it B with 1 finding (asks for root). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
philips_hue
Control Philips Hue smart lights, rooms, scenes, and devices via the Hue Remote API v2.
spark-environment-setup
Set up a working ML training/inference environment on NVIDIA DGX Spark (GB10, aarch64, CUDA 13). Use when installing PyTorch/Unsloth/TRL/vLLM on DGX Spark, hitting libcudart or wheel-ABI errors on aarch64, or choosing between NGC containers and bare pip installs.
spark-training-gotchas
Preflight and diagnose the ten known failure modes for ML training on NVIDIA DGX Spark. Use when a training run on DGX Spark fails to start, OOMs below the 128GB limit, slows down mid-run, or before any multi-hour training job on GB10.
llama-cpp
Runs LLM inference on CPU, Apple Silicon, and consumer GPUs without NVIDIA hardware. Use for edge deployment, M1/M2/M3 Macs, AMD/Intel GPUs, or when CUDA is unavailable. Supports GGUF quantization (1.5-8 bit) for reduced memory and 4-10× speedup vs PyTorch on CPU.
oura-setup
Connect an Oura Ring via OAuth2 — app registration, token exchange, and credential storage.
oura
Pull sleep, activity, readiness, heart rate, and other health data from a connected Oura Ring via the Oura Cloud API V2.