{"record":{"id":"3c2e4ca01f325132","repo":"pbakaus/impeccable","slug":"could-not-fetch-command-list-from-impeccable-style","errorCode":null,"errorMessage":"Could not fetch command list from impeccable.style. Check your network connection.","messagePattern":"Could not fetch command list from impeccable\\.style\\. Check your network connection\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/skills/src/commands.rs","lineNumber":94,"sourceCode":"fn out(io: &mut Io, line: &str) {\n    io.out(&format!(\"{line}\\n\"));\n}\n\nfn err(io: &mut Io, line: &str) {\n    io.err(&format!(\"{line}\\n\"));\n}\n\n// ─── help ────────────────────────────────────────────────────────────────────\n\n/// JS: showHelp()\nfn show_help(io: &mut Io) -> R<()> {\n    let commands: Vec<Value> = match download(&format!(\"{API_BASE}/api/commands\"))\n        .ok()\n        .and_then(|bytes| serde_json::from_slice::<Value>(&bytes).ok())\n    {\n        Some(Value::Array(a)) => a,\n        _ => {\n            err(io, \"Could not fetch command list from impeccable.style. Check your network connection.\");\n            return Err(Flow::Exit(1));\n        }\n    };\n    let pad = |s: &str, n: usize| -> String {\n        let len = utf16_len(s);\n        format!(\"{s}{}\", \" \".repeat(n.saturating_sub(len)))\n    };\n    out(io, \"\\n  Impeccable Skills & Commands\\n\");\n    out(io, \"  Install:  npx impeccable install\");\n    out(io, \"  Link:     npx impeccable link --source=.impeccable\");\n    out(io, \"  Update:   npx impeccable update\");\n    out(io, \"  Docs:     https://impeccable.style/cheatsheet\\n\");\n    out(io, &format!(\"  {} Description\", pad(\"Command\", 22)));\n    out(io, &format!(\"  {} {}\", \"-\".repeat(22), \"-\".repeat(52)));\n\n    let mut sorted: Vec<(String, String)> = commands\n        .iter()\n        .map(|c| {","sourceCodeStart":76,"sourceCodeEnd":112,"githubUrl":"https://github.com/pbakaus/impeccable/blob/2bc2879276c1f321a53c4ca99d3371e411329b52/crates/skills/src/commands.rs#L76-L112","documentation":"`show_help` fetches the dynamic command list from impeccable.style's `/api/commands` endpoint to render the help output. If the download fails or the body is not a JSON array, it prints this message (no trailing newline, via `err`) and exits with code 1 — help display requires network access.","triggerScenarios":"Running `impeccable skills help`/`impeccable skills` (help path) while the GET to `{API_BASE}/api/commands` fails: no network, DNS failure, proxy blocking the domain, TLS error, or the server returning a non-array/non-JSON body.","commonSituations":"Working offline or on a plane; corporate proxy/firewall blocking impeccable.style; VPN captive portal; DNS misconfiguration; the API endpoint down or returning an HTML error page that fails JSON parsing.","solutions":["Check connectivity: `curl -sS https://impeccable.style/api/commands` — if this fails, fix network/DNS/proxy first.","If behind a proxy, set HTTPS_PROXY/HTTP_PROXY so the download can reach the API.","Retry when back online — the help listing is fetched live each time.","Consult the local docs/README for the command list when offline instead of the network help."],"exampleFix":"// before (no proxy in restricted network)\nimpeccable skills help\n// after\nexport HTTPS_PROXY=http://proxy.corp:8080\nimpeccable skills help\n","handlingStrategy":"retry","validationCode":"curl -fsS https://impeccable.style/api/commands -o /dev/null && echo reachable || echo 'API unreachable - fix network/proxy first'","typeGuard":null,"tryCatchPattern":"try {\n  await fetch('https://impeccable.style/api/commands');\n} catch (e) {\n  if (e instanceof TypeError) { /* network/DNS failure - retry or work offline */ }\n  throw e;\n}","preventionTips":["Configure HTTPS_PROXY when behind a corporate proxy.","Don't rely on the network-fetched help when offline; keep local docs handy.","Check firewall rules allow impeccable.style."],"tags":["network","help","http","offline"],"backgroundTag":"network-request-failed","analyzedSha":"2bc2879276c1f321a53c4ca99d3371e411329b52","analyzedAt":"2026-09-08T04:51:14.109Z","contentChangedAt":"2026-09-08T04:51:14.109Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}