Debugging Network Issues
An evidence-driven, falsification-first playbook for network, streaming and protocol bugs where the obvious cause is probably wrong.
Dev & CodingAdvanced★ 1,323⑂ 212AI score 9/10Last updated: Aug 8, 2026
What it does
Guides Claude through a disciplined investigation of incidents like ECONNRESET, HTTP/2 RST_STREAM INTERNAL_ERROR, SSE / long-polling stalls, "always fails after N seconds", CDN/proxy/CGNAT idle timeouts, Cloudflare 524/522, TUN-proxy misrouting and TLS certificate-verification errors.
- Evidence over assumption — no root-cause claim without a concrete artifact (log line, pcap frame, probe output, metric sample).
- Falsification over confirmation — every hypothesis must come with "what observation would make me abandon this?".
- Layered isolation — run the same request through three paths differing by exactly one hop (via CDN,
--resolveto origin, server loopback) to pin the responsible layer in minutes. - Step 0 → Step 8 checklist — scope the symptom, verify the premise, gather evidence at every hop, frame ≥3 hypotheses with falsifiers and layer boundaries, run a decisive experiment, add env-gated instrumentation, counter-review, fix, then re-run the exact same experiment.
- Large-POST recipe — compare
bytes_readtoContent-Lengthanddurationsemantics to separate upload timeouts from processing timeouts. - 15 cognitive traps — circumstantial-evidence convergence, field-semantic confusion, trusting a green health check that probes the wrong plane, CNAME rules overriding explicit PROXY rules, static-IP hosts orphaned by a subnet change, and more.
Who it's for
- Backend and SRE engineers running SSE/WebSocket/streaming APIs with unexplained disconnects.
- Infra owners tracing 524/522/504 across Cloudflare → Caddy/nginx → LB → app stacks.
- Developers on Clash/Shadowrocket/Surge TUN proxies where one site fails while everything else works.
- Teams that want Claude Code to investigate with evidence instead of suggesting a restart.
Examples
- "Our SSE stream always dies at 130s." The skill demands the exact error string and timestamps, then designs a mock idle-upstream experiment to identify which hop's idle timeout fires.
- "Cloudflare returns 524 on a 6 MB upload." It reads the Caddy log signature
status=0, duration=125, bytes_read=4111422, Content-Length=6042141and proves the body upload — not the backend — is the bottleneck. - "One site gives ERR_CONNECTION_CLOSED, all others are fine." It walks DNS (fake
198.18.x.xTUN IPs), route lookup, hostname-vs-IP through the proxy, and CNAME-suffix DIRECT rules overriding an explicit PROXY rule.
· · · Install guide · · ·
Install in the Claude app (no terminal)
- Download the ZIP with the button below.
- In Claude, open Settings → Capabilities and turn on 'Code execution and file creation'. (one time)
- Go to Customize → Skills → + → 'Upload a skill' and upload the ZIP.
Install in Claude Code
Let Claude do it — paste this into Claude Code
Install the skill I found on Claude Skill Mart. Copy the debugging-network-issues folder from the GitHub repo daymade/claude-code-skills into my ~/.claude/skills/debugging-network-issues/. When it's done, tell me in one line what this skill can do.
Install with a command instead
git clone https://github.com/daymade/claude-code-skills.git && mkdir -p ~/.claude/skills && cp -r claude-code-skills/debugging-network-issues ~/.claude/skills/⚠ This is a third-party skill. Check the source repository before installing.
- Open a terminal (macOS Terminal, or WSL / Git Bash on Windows).
- Create the skills directory if needed:
mkdir -p ~/.claude/skills - Clone the repository to a temporary location:
git clone https://github.com/daymade/claude-code-skills.git /tmp/ccs - Copy just this skill:
cp -r /tmp/ccs/debugging-network-issues ~/.claude/skills/ - Confirm the
references/folder (case studies, packet-capture recipes, instrumentation patterns) came along:ls ~/.claude/skills/debugging-network-issues - Restart Claude Code and run
/skillsto verify it is listed. - To trigger it reliably, include the exact error string and timestamps in your prompt (e.g. "HTTP/2 INTERNAL_ERROR after 130.898s at 2024-05-01T10:12Z").
- Clean up:
rm -rf /tmp/ccs
View source on GitHub ↗License: MIT