Skip to content
Security
Skill

/vpn-verify

Post-deployment verification checklist for VPN. Use AUTOMATICALLY after any deployment action (deploy, rebuild, restart) and BEFORE claiming deployment is complete or successful. Evidence before assertions.

From plugin
vpn-setup
1714 skills
Install
$ npx -y skills add Sergei-thinker/vpn-setup --skill vpn-verify --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/vpn-verify

Context preview

The summary Claude sees to decide when to auto-load this skill.

Post-deployment verification checklist for VPN. Use AUTOMATICALLY after any deployment action (deploy, rebuild, restart) and BEFORE claiming deployment is complete or successful. Evidence before assertions.

SKILL.md

vpn-verify.SKILL.md
name: vpn-verify
description: "Post-deployment verification checklist for VPN. Use AUTOMATICALLY after any deployment action (deploy, rebuild, restart) and BEFORE claiming deployment is complete or successful. Evidence before assertions."

VPN Deployment Verification

Mandatory verification checklist after ANY deployment or change to VPN infrastructure. No completion claims without fresh evidence.

When to Use

**AUTOMATICALLY** (do not wait for user to ask):

  • After running `ssh_exec.py deploy quick-rebuild.sh`
  • After running any `deploy-*.sh` script
  • After `ssh_exec.py restart`
  • Before saying "done", "deployed", "VPN is ready", or any success claim

**On request:**

  • User asks "is it working?", "did it deploy correctly?"
  • User asks to verify/check the VPN

The Iron Law

NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE

If you haven't run `ssh_exec.py status` in THIS message, you cannot claim deployment succeeded.

"Should be working" is not verification. Run the command.

Verification Checklist

Execute ALL checks. Report results as pass/fail with evidence.

Check 1: Xray Process Running

**Command:** `python ssh_exec.py status`

| Output | Result | |--------|--------| | Shows "xray" with "running" status | PASS | | Shows "stopped", "failed", or no xray info | FAIL -> `python ssh_exec.py restart`, then re-check | | SSH connection error | FAIL -> run vpn-troubleshoot |

Check 2: VLESS URIs Generated

**What to verify:** Deployment script output contained at least one line starting with `vless://`

| Condition | Result | |-----------|--------| | 1+ VLESS URIs captured from deploy output | PASS | | No URIs in output | FAIL -> check deploy logs, may need to re-run |

Check 3: Server IP Matches Config

**What to verify:** The IP address in the VLESS URI matches `VPN_HOST` in `.env`

**How:** Read `.env`, extract `VPN_HOST`, compare with the IP in captured VLESS URIs.

| Condition | Result | |-----------|--------| | IPs match | PASS | | IPs differ | FAIL -> `.env` may be outdated or URI is from old deployment |

Check 4: SSH Port Changed

**Command:** Check `VPN_SSH_PORT` in `.env` OR run `python ssh_exec.py exec "grep -E '^Port ' /etc/ssh/sshd_config"`

| Condition | Result | |-----------|--------| | SSH port is NOT 22 (typically 49152) | PASS | | SSH port is still 22 | WARN -> "TSPU can block port 22 to foreign IPs. Consider changing." |

Check 5: Firewall Active

**Command:** `python ssh_exec.py exec "ufw status | head -1"`

| Output | Result | |--------|--------| | "Status: active" | PASS | | "Status: inactive" or command not found | FAIL -> `python ssh_exec.py exec "ufw --force enable"` |

Check 6: Inbound Ports Listening

**Command:** `python ssh_exec.py exec "ss -tnlp | grep xray"`

| Output | Result | |--------|--------| | Shows ports 443, 8443, 2053 (at least one) | PASS | | No xray ports listening | FAIL -> restart xray, check config |

Report Format

After all checks, present a summary:

Результаты проверки деплоя:
  1. Xray процесс:     [PASS/FAIL]
  2. VLESS URI:         [PASS/FAIL]
  3. IP совпадает:      [PASS/FAIL]
  4. SSH порт:          [PASS/WARN]
  5. Firewall:          [PASS/FAIL]
  6. Порты слушают:     [PASS/FAIL]

If ALL pass: provide user with VLESS URIs and client setup instructions. If ANY fail: diagnose the failure, do NOT claim success.

Red Flags — STOP Immediately

You are about to violate this rule if you catch yourself:

  • Writing "deployed successfully" without running `ssh_exec.py status` first
  • Saying "VPN is ready" based on script exit code alone
  • Assuming firewall is active because the script enables it
  • Presenting URIs without verifying xray is actually running
  • Using words like "should work", "probably deployed", "looks good"

After Verification Passes

Tell user (in Russian): 1. Present the VLESS URIs clearly 2. Remind: "Import URI into your VPN client" 3. Remind: "Enable TUN mode" (critical) 4. Remind: "Test by opening 2ip.ru — should show VPS country for non-Russian sites" 5. Point to platform-specific setup guide (`client-configs/v2rayn-setup.md` for Windows)

Read more
Ships withvpn-setup

English: Multi-layer VPN system (VLESS Reality + Russian relay VPS + WebRTC) for bypassing Russian internet censorship (ТСПУ/DPI). Designed to be deployed automatically via Claude Code. See below for Russian documentation.

Get the whole plugin
Stats
175
Stars
24
Forks
Maintained
Maintenance
Shell
Language
MIT
License
4mo ago
Last commit
4mo ago
Created

Repo: Sergei-thinker/vpn-setup