{
  "schemaVersion": "1.0",
  "item": {
    "slug": "nordvpn",
    "name": "NordVPN",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/maciekish/nordvpn",
    "canonicalUrl": "https://clawhub.ai/maciekish/nordvpn",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/nordvpn",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=nordvpn",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/nordvpn"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/nordvpn",
    "agentPageUrl": "https://openagent3.xyz/skills/nordvpn/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nordvpn/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nordvpn/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "NordVPN CLI Skill (Linux)",
        "body": "A ClawBot skill for controlling the NordVPN Linux CLI (nordvpn) to connect/disconnect, select locations, verify status, and adjust settings from automations and workflows."
      },
      {
        "title": "Assumptions / Compatibility",
        "body": "Works with the official nordvpn CLI (example shown: 4.3.1 [snap]).\nRequires the NordVPN daemon running (usually nordvpnd) and sufficient permissions.\nSome commands may require elevated privileges depending on distro + install method (snap vs deb)."
      },
      {
        "title": "Option A: Snap (common on Ubuntu)",
        "body": "sudo snap install nordvpn\nnordvpn --version"
      },
      {
        "title": "Option B: Distro package / repo (varies)",
        "body": "If you installed via Nord’s repo or a package manager, just verify:\n\nwhich nordvpn\nnordvpn --version"
      },
      {
        "title": "Verify daemon is running",
        "body": "# systemd installs usually\nsystemctl status nordvpnd --no-pager || true\n\n# snap installs may not expose systemd unit the same way\nnordvpn status || true\n\n# or may require the full patch to be specified like so\n/snap/bin/nordvpn status || true"
      },
      {
        "title": "Authentication / Login",
        "body": "NordVPN CLI typically requires logging in once per machine/user session.\n\nnordvpn login\n\nIf the environment is headless, the CLI will guide you through the login flow (often via a browser link / code). After login, confirm:\n\nnordvpn account\nnordvpn status\n\nClawBot guidance: treat login as a manual prerequisite unless you explicitly automate the browser-based login flow."
      },
      {
        "title": "Status",
        "body": "nordvpn status"
      },
      {
        "title": "Connect (best available)",
        "body": "nordvpn connect\n# alias:\nnordvpn c"
      },
      {
        "title": "Connect to a country / city / group",
        "body": "# country\nnordvpn connect Sweden\n\n# city (must exist in `nordvpn cities <country>`)\nnordvpn connect \"Stockholm\"\n\n# group (must exist in `nordvpn groups`)\nnordvpn connect P2P"
      },
      {
        "title": "Disconnect",
        "body": "nordvpn disconnect\n# alias:\nnordvpn d"
      },
      {
        "title": "List locations",
        "body": "nordvpn countries\nnordvpn cities Sweden\nnordvpn groups"
      },
      {
        "title": "Settings (read + change)",
        "body": "nordvpn settings\n\n# examples (options differ by version)\nnordvpn set autoconnect on\nnordvpn set killswitch on\nnordvpn set threatprotectionlite on  # if supported\nnordvpn set protocol nordlynx        # if supported"
      },
      {
        "title": "Allowlist (bypass VPN for certain traffic)",
        "body": "# view help\nnordvpn allowlist --help\n\n# examples (subcommands differ by version)\nnordvpn allowlist add port 22\nnordvpn allowlist add subnet 192.168.0.0/16\nnordvpn allowlist remove port 22"
      },
      {
        "title": "What this skill should do well",
        "body": "Idempotent connection actions\n\nIf already connected to the requested target, do nothing (or return “already connected”).\nIf connected elsewhere, optionally disconnect then connect to target.\n\n\n\nReliable verification\n\nAfter connect/disconnect, always run nordvpn status and parse the result.\n\n\n\nSafe fallbacks\n\n\nIf a requested city/country/group is invalid, provide closest alternatives by listing:\n\nnordvpn countries\nnordvpn cities <country>\nnordvpn groups\n\n\n\n\n\nHuman-in-the-loop login\n\nIf nordvpn reports not logged in, return a structured response instructing to run nordvpn login."
      },
      {
        "title": "Recommended “actions” (API surface)",
        "body": "Implement these as the skill’s callable intents/tools:\n\nstatus() → returns parsed connection status\nconnect_best() → connects to best available\nconnect_country(country)\nconnect_city(city) (optionally with country for disambiguation)\nconnect_group(group)\ndisconnect()\nlist_countries()\nlist_cities(country)\nlist_groups()\nget_settings()\nset_setting(key, value)\nallowlist_add(type, value)\nallowlist_remove(type, value)"
      },
      {
        "title": "1) Always start with status",
        "body": "nordvpn status\n\nParse fields commonly returned by the CLI, such as:\n\nConnection state (Connected/Disconnected)\nCurrent server / country / city\nIP, protocol, technology"
      },
      {
        "title": "2) Connect flow",
        "body": "Goal: connect to a target (country/city/group) with verification.\n\nPseudo-logic:\n\nRun nordvpn status\nIf disconnected → connect directly\nIf connected to different target → nordvpn disconnect then connect\nRun nordvpn status again and confirm connected\n\nCommands:\n\nnordvpn connect \"<target>\"\nnordvpn status"
      },
      {
        "title": "3) Disconnect flow",
        "body": "nordvpn disconnect\nnordvpn status"
      },
      {
        "title": "4) Resolve targets safely",
        "body": "If user asks for a city:\n\nPrefer nordvpn cities <country> when country is known\nOtherwise attempt connect; if it fails, list countries and search-like suggestions.\n\nnordvpn countries\nnordvpn cities \"<country>\"\nnordvpn groups"
      },
      {
        "title": "Not logged in",
        "body": "Symptoms:\n\nCLI complains about authentication/account/login.\n\nHandling:\n\nReturn: “Login required. Run nordvpn login and repeat.”\nOptionally: run nordvpn account to confirm."
      },
      {
        "title": "Daemon not running / permission denied",
        "body": "Symptoms:\n\nCan’t connect, service errors, permission errors.\n\nHandling:\n\nCheck systemctl status nordvpnd (systemd installs)\n\n\nConfirm snap service health (snap installs vary)\n\n\nEnsure user belongs to the right group (some installs use a nordvpn group):\ngroups\ngetent group nordvpn || true"
      },
      {
        "title": "Invalid location/group",
        "body": "Symptoms:\n\n“Unknown country/city/group” or connect fails immediately.\n\nHandling:\n\nProvide available options:\nnordvpn countries\nnordvpn groups\nnordvpn cities \"<country>\""
      },
      {
        "title": "Ensure VPN is connected (any server)",
        "body": "nordvpn status | sed -n '1,10p'\nnordvpn connect\nnordvpn status | sed -n '1,15p'"
      },
      {
        "title": "Reconnect to a specific country",
        "body": "nordvpn disconnect\nnordvpn connect Sweden\nnordvpn status"
      },
      {
        "title": "Toggle killswitch (example)",
        "body": "nordvpn set killswitch on\nnordvpn settings"
      },
      {
        "title": "Notes",
        "body": "Command options and setting keys can differ by NordVPN CLI version. Always rely on:\nnordvpn help\nnordvpn set --help\nnordvpn allowlist --help\n\n\n\nIf you need stable machine-readable output, the NordVPN CLI does not consistently provide JSON; plan to parse human-readable status text defensively (line-based key/value extraction, tolerate missing fields)."
      }
    ],
    "body": "NordVPN CLI Skill (Linux)\n\nA ClawBot skill for controlling the NordVPN Linux CLI (nordvpn) to connect/disconnect, select locations, verify status, and adjust settings from automations and workflows.\n\nAssumptions / Compatibility\nWorks with the official nordvpn CLI (example shown: 4.3.1 [snap]).\nRequires the NordVPN daemon running (usually nordvpnd) and sufficient permissions.\nSome commands may require elevated privileges depending on distro + install method (snap vs deb).\nInstallation\nOption A: Snap (common on Ubuntu)\nsudo snap install nordvpn\nnordvpn --version\n\nOption B: Distro package / repo (varies)\n\nIf you installed via Nord’s repo or a package manager, just verify:\n\nwhich nordvpn\nnordvpn --version\n\nVerify daemon is running\n# systemd installs usually\nsystemctl status nordvpnd --no-pager || true\n\n# snap installs may not expose systemd unit the same way\nnordvpn status || true\n\n# or may require the full patch to be specified like so\n/snap/bin/nordvpn status || true\n\nAuthentication / Login\n\nNordVPN CLI typically requires logging in once per machine/user session.\n\nnordvpn login\n\n\nIf the environment is headless, the CLI will guide you through the login flow (often via a browser link / code). After login, confirm:\n\nnordvpn account\nnordvpn status\n\n\nClawBot guidance: treat login as a manual prerequisite unless you explicitly automate the browser-based login flow.\n\nQuick Reference\nStatus\nnordvpn status\n\nConnect (best available)\nnordvpn connect\n# alias:\nnordvpn c\n\nConnect to a country / city / group\n# country\nnordvpn connect Sweden\n\n# city (must exist in `nordvpn cities <country>`)\nnordvpn connect \"Stockholm\"\n\n# group (must exist in `nordvpn groups`)\nnordvpn connect P2P\n\nDisconnect\nnordvpn disconnect\n# alias:\nnordvpn d\n\nList locations\nnordvpn countries\nnordvpn cities Sweden\nnordvpn groups\n\nSettings (read + change)\nnordvpn settings\n\n# examples (options differ by version)\nnordvpn set autoconnect on\nnordvpn set killswitch on\nnordvpn set threatprotectionlite on  # if supported\nnordvpn set protocol nordlynx        # if supported\n\nAllowlist (bypass VPN for certain traffic)\n# view help\nnordvpn allowlist --help\n\n# examples (subcommands differ by version)\nnordvpn allowlist add port 22\nnordvpn allowlist add subnet 192.168.0.0/16\nnordvpn allowlist remove port 22\n\nSkill Design\nWhat this skill should do well\n\nIdempotent connection actions\n\nIf already connected to the requested target, do nothing (or return “already connected”).\nIf connected elsewhere, optionally disconnect then connect to target.\n\nReliable verification\n\nAfter connect/disconnect, always run nordvpn status and parse the result.\n\nSafe fallbacks\n\nIf a requested city/country/group is invalid, provide closest alternatives by listing:\n\nnordvpn countries\nnordvpn cities <country>\nnordvpn groups\n\nHuman-in-the-loop login\n\nIf nordvpn reports not logged in, return a structured response instructing to run nordvpn login.\nRecommended “actions” (API surface)\n\nImplement these as the skill’s callable intents/tools:\n\nstatus() → returns parsed connection status\nconnect_best() → connects to best available\nconnect_country(country)\nconnect_city(city) (optionally with country for disambiguation)\nconnect_group(group)\ndisconnect()\nlist_countries()\nlist_cities(country)\nlist_groups()\nget_settings()\nset_setting(key, value)\nallowlist_add(type, value)\nallowlist_remove(type, value)\nSuggested Implementation Pattern (CLI orchestration)\n1) Always start with status\nnordvpn status\n\n\nParse fields commonly returned by the CLI, such as:\n\nConnection state (Connected/Disconnected)\nCurrent server / country / city\nIP, protocol, technology\n2) Connect flow\n\nGoal: connect to a target (country/city/group) with verification.\n\nPseudo-logic:\n\nRun nordvpn status\nIf disconnected → connect directly\nIf connected to different target → nordvpn disconnect then connect\nRun nordvpn status again and confirm connected\n\nCommands:\n\nnordvpn connect \"<target>\"\nnordvpn status\n\n3) Disconnect flow\nnordvpn disconnect\nnordvpn status\n\n4) Resolve targets safely\n\nIf user asks for a city:\n\nPrefer nordvpn cities <country> when country is known\nOtherwise attempt connect; if it fails, list countries and search-like suggestions.\nnordvpn countries\nnordvpn cities \"<country>\"\nnordvpn groups\n\nCommon Errors & Handling\nNot logged in\n\nSymptoms:\n\nCLI complains about authentication/account/login.\n\nHandling:\n\nReturn: “Login required. Run nordvpn login and repeat.”\nOptionally: run nordvpn account to confirm.\nDaemon not running / permission denied\n\nSymptoms:\n\nCan’t connect, service errors, permission errors.\n\nHandling:\n\nCheck systemctl status nordvpnd (systemd installs)\n\nConfirm snap service health (snap installs vary)\n\nEnsure user belongs to the right group (some installs use a nordvpn group):\n\ngroups\ngetent group nordvpn || true\n\nInvalid location/group\n\nSymptoms:\n\n“Unknown country/city/group” or connect fails immediately.\n\nHandling:\n\nProvide available options:\n\nnordvpn countries\nnordvpn groups\nnordvpn cities \"<country>\"\n\nPractical Automation Recipes\nEnsure VPN is connected (any server)\nnordvpn status | sed -n '1,10p'\nnordvpn connect\nnordvpn status | sed -n '1,15p'\n\nReconnect to a specific country\nnordvpn disconnect\nnordvpn connect Sweden\nnordvpn status\n\nToggle killswitch (example)\nnordvpn set killswitch on\nnordvpn settings\n\nNotes\n\nCommand options and setting keys can differ by NordVPN CLI version. Always rely on:\n\nnordvpn help\nnordvpn set --help\nnordvpn allowlist --help\n\n\nIf you need stable machine-readable output, the NordVPN CLI does not consistently provide JSON; plan to parse human-readable status text defensively (line-based key/value extraction, tolerate missing fields)."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/maciekish/nordvpn",
    "publisherUrl": "https://clawhub.ai/maciekish/nordvpn",
    "owner": "maciekish",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/nordvpn",
    "downloadUrl": "https://openagent3.xyz/downloads/nordvpn",
    "agentUrl": "https://openagent3.xyz/skills/nordvpn/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nordvpn/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nordvpn/agent.md"
  }
}