SKILL.md
Site Check Skill
"Is it down or is it me?" is a diagnosis, not a yes/no — a site can fail at DNS, at TLS, at HTTP, or only from your network, and each failure names a different fix. This skill runs the layers in order with plain curl, reads the evidence (status codes, cert dates, resolver agreement), and answers with where it's broken, which is the answer that was actually needed.
What This Skill Produces
- The verdict — up / down-for-everyone-probably / broken-at-layer-X / likely-just-you, with the evidence
- The layer results — DNS resolution, TLS handshake + cert expiry, HTTP status, response timing
- The interpretation — what a 503 vs. a timeout vs. a cert error vs. NXDOMAIN each means, in words
- The commands — every check rerunnable
Required Inputs
Ask for these if not provided:
- The URL/domain — as the user experiences it (scheme and path matter;
example.comup andexample.com/appdown is a real and common state) - The symptom — error message, spinner, cert warning — it picks which layer to check first
- Whose site — theirs (deeper diagnostics welcome) vs. someone else's (status check, politely)
Framework: The Layer Walk
- HTTP first (the 5-second answer):
curl -sI -m 10 -o /dev/null -w "%{http_code} %{time_total}s %{remote_ip}\n" "https://example.com"— status, total time, and which IP answered in one line. 200/301 = up · 4xx = up but refusing this request · 5xx = up but broken behind the server ·000= never connected → walk down the stack. - DNS when connection fails:
curl -s "https://dns.google/resolve?name=example.com&type=A"— NXDOMAIN vs. records-exist separates "domain problem" from "server problem"; two public resolvers agreeing ≈ not a DNS issue (the dns-lookup skill has the full treatment). - TLS when the browser screamed:
curl -svo /dev/null "https://example.com" 2>&1 | grep -E "expire|subject|issuer"— expired cert, wrong-host cert, or incomplete chain each read differently; quote the expiry date and say how long ago/until.
