128 lines
3.9 KiB
Markdown
128 lines
3.9 KiB
Markdown
# 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
|