# NordVPN Client Skill Implementation Plan > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. **Goal:** Build a cross-platform `nordvpn-client` skill for macOS and Linux that can install/bootstrap NordVPN, log in, connect to a target country or city, verify the VPN session, disconnect, and report status. **Architecture:** Implement one skill with one script entrypoint and platform-specific backends. Linux uses the official NordVPN CLI. macOS uses a CLI path when present and otherwise falls back to the NordVPN app workflow. The skill manages VPN state only, leaving follow-up operations like `web-automation` to separate agent steps. **Tech Stack:** Node.js, shell/OS commands, NordVPN CLI/app integration, OpenClaw skills, git --- ### Task 1: Create isolated worktree **Files:** - Modify: repo git metadata only **Step 1: Create worktree** Run: ```bash git -C /Users/stefano/.openclaw/workspace/projects/stef-openclaw-skills worktree add /Users/stefano/.openclaw/workspace/projects/stef-openclaw-skills/.worktrees/nordvpn-client -b feature/nordvpn-client ``` **Step 2: Verify baseline** Run: ```bash git -C /Users/stefano/.openclaw/workspace/projects/stef-openclaw-skills/.worktrees/nordvpn-client status --short --branch ``` Expected: clean feature branch ### Task 2: Create the local skill runtime **Files:** - Create: `skills/nordvpn-client/SKILL.md` - Create: `skills/nordvpn-client/scripts/nordvpn-client.js` - Optional Create: helper files under `skills/nordvpn-client/scripts/` **Step 1: Write the failing checks** - Missing command/action should fail with clear usage output - Unsupported platform should fail clearly **Step 2: Implement platform detection and install probe** - detect `darwin` vs `linux` - detect whether NordVPN CLI/app is already present - expose `status` with install/auth/connect fields ### Task 3: Implement install and auth bootstrap **Files:** - Modify: `skills/nordvpn-client/scripts/nordvpn-client.js` **Step 1: Linux install/login path** - implement official CLI probe/install path - implement token-based login path **Step 2: macOS install/login path** - probe CLI first - if absent, probe/install NordVPN app path - implement login/bootstrap state verification for the app workflow **Step 3: Keep secrets external** - env vars or local credential path only - no raw secrets in docs or skill text ### Task 4: Implement connect/disconnect/status/verification **Files:** - Modify: `skills/nordvpn-client/scripts/nordvpn-client.js` **Step 1: Connect** - support `--country` and `--city` - normalize target handling per platform **Step 2: Verify** - report local connection state - run public IP / geolocation verification - fail if connection target cannot be reasonably verified **Step 3: Disconnect and status** - implement clean disconnect - ensure `status` emits machine-readable output for agent use ### Task 5: Validate locally in OpenClaw workspace **Files:** - Test: local workspace copy of `nordvpn-client` **Step 1: Direct command validation** - usage errors are correct - install probe works on this host - status output is coherent before login/connect **Step 2: One real connect flow** - connect to a test country/city if credentials are available - verify local state + external IP/location - disconnect cleanly ### Task 6: Promote to repo docs and publish **Files:** - Modify: `README.md` - Modify: `docs/README.md` - Create: `docs/nordvpn-client.md` - Create/Modify: `skills/nordvpn-client/...` **Step 1: Document the skill** - install/bootstrap behavior - auth expectations - connect/disconnect/status commands - macOS vs Linux notes **Step 2: Commit and push** Run: ```bash git add skills/nordvpn-client docs README.md git commit -m "feat: add nordvpn client skill" git push -u origin feature/nordvpn-client ``` **Step 3: Merge and cleanup** - fast-forward or merge to `main` - push `main` - remove the worktree - delete the feature branch