runtime/skills/operator/proxmox-management/SKILL.md
Manage Proxmox using the native proxmox tool first, with shell wrappers retained for USB passthrough and backup-restore move flows.
npx skillsauth add rcarmo/piclaw proxmox-managementInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill for Proxmox work when you need:
proxmox workflow examples for routine infra operationsThis skill is focused on:
qemu)usb0..usb4)Set Proxmox API environment variables first when using the shell wrappers directly.
Keep examples sanitized in prompts/logs. Use placeholders in documentation and avoid sharing real secrets.
TOKEN_JSON="$(piclaw keychain get proxmox/piclaw-management-token)"
export PVE_BASE="https://proxmox.example.com:8006/api2/json"
export PVE_TOKEN_USER="$(printf '%s' "$TOKEN_JSON" | jq -r '.username')"
export PVE_TOKEN_SECRET="$(printf '%s' "$TOKEN_JSON" | jq -r '.secret')"
If PVE_TOKEN_USER / PVE_TOKEN_SECRET are omitted, scripts try keychain entry proxmox/piclaw-management-token.
Prefer the native proxmox tool for routine work when the session already has a
session-scoped Proxmox profile. Use:
action: "request" for ad-hoc API callsaction: "workflow" for native VM/LXC/storage/task/metrics workflowsaction: "capabilities", "workflow_help", and "recommend" to discover the right workflow with low contextCommon native workflow examples:
workflow: "vm.inspect"workflow: "vm.create"workflow: "lxc.create"workflow: "storage.create"workflow: "storage.download_url"workflow: "vm.iso.attach"workflow: "vm.iso.detach"workflow: "vm.disk.resize"workflow: "vm.disk.detach"workflow: "vm.disk.remove"workflow: "backup.restore"workflow: "metrics.node"workflow: "metrics.vm"workflow: "metrics.storage"Use the shell scripts below only when a shell-oriented wrapper is more convenient or when working with the remaining skill-specific flows.
The old packaged runtime/scripts/proxmox.ts helper was removed once the native
session-scoped proxmox tool became the canonical path. The wrappers in this
skill directory call the shared runtime Proxmox client/workflow layer directly so
node resolution, task polling, guest-IP lookup, metrics retrieval, and keychain-backed
API access stay centralized without a duplicate repo-level CLI.
Wrappers in this skill directory:
proxmox-vm-status.ts (delegates to vm inspect)proxmox-start-vm.tsproxmox-stop-vm.tsproxmox-resume-vm.tsproxmox-list-usb.tsproxmox-upsert-usb-mapping.tsproxmox-attach-usb-mapping-to-vm.tsproxmox-move-vm-via-backup-restore.tsUse the native tool when the session already has a Proxmox profile:
workflow: "vm.inspect"workflow: "vm.create"workflow: "vm.iso.attach"workflow: "vm.disk.resize" / "vm.disk.remove"When you are unsure which fields are needed, prefer:
action: "recommend" with a short intentaction: "workflow_help" for the selected workflowUse the native workflow:
workflow: "storage.download_url"This is a server-side Proxmox pull into storage, so it avoids agent-side file upload.
export PVE_VMID="<vmid>"
bun ./proxmox-vm-status.ts
export PVE_VMID="<vmid>"
bun ./proxmox-start-vm.ts
# or
bun ./proxmox-stop-vm.ts
# or
bun ./proxmox-resume-vm.ts
export PVE_NODE="<node>"
export PVE_USB_BLUETOOTH_ONLY=1
bun ./proxmox-list-usb.ts
Optional filters:
PVE_USB_VENDORID (e.g. 0a12)PVE_USB_PRODID (e.g. 0001)PVE_USB_CLASS (e.g. 224 or e0)Prefer mapping-based attach with API tokens.
# Create/update mapping
export PVE_MAPPING_ID="vm117-bt"
export PVE_MAPPING_MAP="node=<node>,id=<vendorid>:<prodid>"
bun ./proxmox-upsert-usb-mapping.ts
# Attach mapping to VM usb0
export PVE_NODE="<node>"
export PVE_VMID="<vmid>"
export PVE_USB_MAPPING_ID="vm117-bt"
export PVE_USB_SLOT="usb0"
bun ./proxmox-attach-usb-mapping-to-vm.ts
Use when direct migration fails due to incompatible storage types.
export PVE_SOURCE_NODE="<source-node>"
export PVE_VMID="<vmid>"
export PVE_TARGET_NODE="<target-node>"
export PVE_TARGET_STORAGE="<target-storage>"
# optional
export PVE_BACKUP_STORAGE="backup"
export PVE_BACKUP_MODE="stop"
export PVE_DELETE_SOURCE="0" # set to 1 to remove source after backup
bun ./proxmox-move-vm-via-backup-restore.ts
usbX=host=VID:PID may be rejected by Proxmox ACL checks.usbX=mapping=<id>) is the safe default for token-based automation.PVE_NODE is no longer required for the basic status/start/stop/resume wrappers.documentation
Resolve Teams or SharePoint document links to canonical metadata.
development
Search the web via SearXNG and optionally convert result pages to Markdown.
development
Search via SearXNG, fetch top results, and return quick summaries plus markdown.
testing
Fetch a user's recent tweets (tweets, replies, retweets) using Playwright + Nitter fallbacks and produce compact JSON/Markdown summaries.