Agent skill · software engineering · aradotso

vpn-detector-android

vpn-detector-android — an agent skill for coding agents.

Why this skill is useful

Adds executable detection scripts for VPN usage on Android that are not commonly found in public documentation.

What it needs

Requires android-sdk installed locally. About 4k tokens when loaded. Last updated 2026-07-09. 70 stars on the source repository.

What this skill does

app/ src/main/java/com/cherepavel/vpndetector/ VpnDetector.kt # Core detection logic InterfaceDetector.kt # Native/Java network interface inspection PackageDetector.kt # VPN app enumeration via PackageManager MainActivity.kt # UI / demo activity src/main/res/ AndroidManifest.xml bash git clone https://github.com/cherepavel/VPN-Detector.git xml <uses-permission android:name="android.permission.ACCESSNETWORKSTATE" /> <uses-permission android:name="android.permission.QUERYALLPACKAGES" /> kotlin import android.content.Context import android.net.ConnectivityManager import android.net.NetworkCapabilities fun isVpnActive(context: Context): Boolean { val cm = context.getSystemService(Context.CONNECTIVITYSERVICE) as ConnectivityManager val network = cm.activeNetwork ?: return false val caps = cm.getNetworkCapabilities(network) ?: return false return caps.hasTransport(NetworkCapabilities.TRANSPORTVPN) } kotlin fun isVpnActiveOnAnyNetwork(context: Context): Boolean { val cm = context.getSystemService(Context.CONNECTIVITYSERVICE) as ConnectivityManager return cm.allNetworks.any { network -> cm.getNetworkCapabilities(network) ?.hasTransport(NetworkCapabilities.TRANSPORTVPN) == true } } kotlin import java.net.NetworkInterface fun detectVpnInterfaces(): List<String> { val vpnPrefixes = listOf("tun", "wg", "ppp", "tap", "ipsec", "utun") return try { NetworkInterface.getNetworkInterfaces() ?.toList() ?.filter { iface -> iface.isUp && vpnPrefixes.any { prefix -> iface.name.startsWith(prefix) } } ?.map { it.name } ?: emptyList() } catch (e: Exception) { emptyList() } } fun hasVpnInterface(): Boolean = detectVpnInterfaces().isNotEmpty() kotlin import android.content.Context import android.content.pm.PackageManager val knownVpnPackages = listOf( "com.expressvpn.vpn", "com.nordvpn.android", "com.privateinternetaccess.android", "com.surfshark.vpnclient.android", "org.torproject.android", "com.protonvpn.android", "com.mullvad.vpn", "com.wireguard.android", "net.openvpn.openvpn", "com.stron …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills aradotso/vpn-detector-android

View the source on GitHub

Browse the @skills marketplace