modules/programs/agents/shared/skills/caddy/SKILL.md
Inspect and manage my self-hosted Caddy reverse proxy via its admin API. Use when the user asks about Caddy, mentions reverse proxy routes, virtual hosts, TLS/cert issues for internal `.lan` domains, upstream health, or wants to view/reload the active Caddy configuration.
npx skillsauth add MichaelVessia/nixos-config caddyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage my self-hosted Caddy reverse proxy through its admin API: inspect the running config, list routes and upstream pools, check the internal CA, and hot-reload a new config file.
The admin API URL is exported into the shell by sops-nix (see
modules/programs/shell.nix):
CADDY_URL — base URL of the admin API, no trailing slash
(e.g. http://192.168.1.252:2019)The Caddy admin API has no authentication. It is bound to a LAN-only
address on the LXC host; off-network access requires tailscale/VPN. The caddy
CLI reports a JSON error envelope when CADDY_URL is missing.
Use the installed caddy CLI for common operations. It always emits a single
JSON envelope with ok, command, result or error, and next_actions.
scripts/caddy.sh remains as a compatibility shim for older workflows.
caddy config # GET /config/ (full active config)
caddy routes # matchers + upstreams per server
caddy upstreams # live reverse-proxy pool + health
caddy pki-ca # internal CA info (GET /pki/ca/local)
caddy reload <config.json> --confirm-reload # POST /load, confirm first
For anything not covered, call the API directly with $CADDY_URL — see
references/api-endpoints.md and references/quick-reference.md.
caddy routes to see all matchers + their upstream dials.curl -fsS "$CADDY_URL/config/" | jq '
.apps.http.servers[].routes[]
| select(.match[]?.host[]? == "example.lan")
'
caddy upstreams..lan domainsThis Caddy uses tls.automation.issuers.module = internal, i.e. Caddy's
built-in CA. Clients must trust Caddy's root CA cert to avoid browser
warnings:
caddy pki-ca — returns the CA's root_certificate (PEM).update-ca-certificates on Linux, mobile profile, etc.).reload replaces the entire active configuration atomically. Caddy validates
the new config first, but a bad config that still parses can take services
offline. Always confirm with the user before:
caddy reload <file> --confirm-reload — replaces the running configPOST /load, PATCH /config/..., PUT /config/...,
DELETE /config/..., or POST /stop callRequire the user to say something explicit like "yes, reload" or "go ahead, apply it" before invoking. Show them the diff of what will change first when possible.
references/api-endpoints.md — admin API endpoints used here (/config/,
/load, /reverse_proxy/upstreams, /pki/ca/local)references/quick-reference.md — copy-paste curl recipesreferences/troubleshooting.md — admin API reachability, invalid configs,
internal-CA cert trust issues/load.192.168.1.252:2019). Off-network access requires
tailscale or VPN.CADDY_URL is unreachable, surface that to the user rather than
guessing.development
Restate the last message in plain human language, with no jargon.
testing
Fan out a batch of work items into one PR each via isolated worktree agents, review every PR before it opens, then babysit all PRs through green CI and review feedback. Use when the user wants to fan out PRs, dispatch parallel PR agents over a list of items, or run a batch of independent changes as separate PRs.
development
Dispatch user-visible coding or research agents through Herdr with Codex-Desktop-like thread ergonomics. Use when the user asks to use Herdr to spawn, dispatch, fan out, inspect, follow up with, or monitor agent workspaces/threads.
development
Generate self-contained HTML visualizations with Plannotator theming. Use for implementation plans, PR explainers, architecture diagrams, data tables, slide decks, and any visual explanation of technical concepts. Plans and PR explainers follow Plannotator's prescriptive approach; all other visual content delegates to nicobailon/visual-explainer.