Individual skill
tunnel-doctor
MUST be used first for tunnel / proxy-path connectivity failures or slow throughput (网络故障 / 连不上 / 代理或隧道下超时). Diagnoses Tailscale, proxy, TUN, DNS and SSH-tunnel problems on macOS and Windows/WSL, e.g. Tailscale ping works but SSH fails, curl works but browser gets 503, Git/Docker fails behind the proxy, or downloads crawl despite a reachable proxy. Not for application-layer bugs (use debugging-network-issues).
tunnel-doctor/SKILL.md
Source commit 7c4d326ddd94d504e00e241ba49498e95160afbe
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- No
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Not checked yet
- Last checked
- Nov 4, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 1,520
- Repository last updated
- Nov 7, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- devops Derived category
- testing Derived category
- devops-containers Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesSKILL.mdcore · 96,250 bytesreferences/codex-startup-before-handshake.mddoc · 3,240 bytesreferences/dns_resolver_chain_stall.mddoc · 8,850 bytesreferences/network_change_recovery.mddoc · 5,359 bytesreferences/node-liveness-verification.mddoc · 4,590 bytesreferences/provider_account_suspension.mddoc · 2,852 bytesreferences/proxy_conflict_reference.mddoc · 29,182 bytesreferences/proxy_node_chain_throughput.mddoc · 7,190 bytesreferences/single-host-dns-migration.mddoc · 2,216 bytesreferences/ssh_tunnel_source_restriction.mddoc · 5,322 bytesreferences/tailscale_address_family_ssh.mddoc · 3,284 bytesreferences/windows_host_tun_wsl_cascade.mddoc · 12,503 bytesscripts/quick_diagnose.pyruns · 17,905 bytestests/test_quick_diagnose.pyruns · 6,181 bytes
Read excerpt
# Tunnel Doctor
Diagnose and fix conflicts when Tailscale coexists with proxy/VPN tools on macOS, with specific guidance for SSH access to WSL instances.
> **Methodology base:** the general diagnostic discipline this skill builds on — evidence over assumption, falsification over confirmation, layered isolation, counter-review — lives in the **debugging-network-issues** skill. This skill is the macOS Tailscale⨯proxy *domain* layer on top of it; reach for the base skill when the symptom is *not* a known Tailscale/proxy conflict.
**Ownership boundary:** this skill owns concrete local network-path operations:
Tailscale, route/DNS/proxy interception, VM/WSL propagation, TUN forwarding
planes, and proxy node/exit/chain capacity. Use `debugging-network-issues` as the
general method when the boundary is still unknown or the symptom belongs to
SSE/CDN/application protocol behavior. This keeps one concrete operator instead
of forcing the user to choose between two overlapping proxy doctors.
## Target and task scope