Install
openclaw skills install vmctl-opsUse when vmctl is already installed and the agent must immediately run safe post-install checks and first lifecycle actions without guessing.
openclaw skills install vmctl-opsThis skill defines what the agent should do right after vmctl installation on the Hermes host.
Goal: quickly verify that vmctl is operational, run a safe smoke cycle, clean artifacts, and report status in operator-friendly form.
Installation source (performed by operator):
Important:
vmctl is missing, stop and redirect operator to repo/release install docs.Do not use for:
vmctl CLI (no privilege escalation or forced user switching in this skill)./opt/hermes-vmctlvmctl must be available in PATH./opt/hermes-vmctl/config/vmctl.yaml./opt/hermes-vmctl/state and /opt/hermes-vmctl/state/deleted.mode, preflight, doctor, list, create, status, delete, purge, recover.vmctl-test-*) and avoid touching non-test resources unless operator explicitly asks for it.# baseline checks
vmctl mode
vmctl preflight
vmctl doctor
vmctl list --all
# recover state drift
vmctl recover --dry-run
vmctl recover --apply
Run in order:
vmctl mode
vmctl preflight
vmctl doctor
vmctl list --all
Rules:
preflight or doctor is red -> stop and report blocker.list --all shows pending/failed from old runs, recover/cleanup before new create-tests.Use a test name only:
vmctl-test-<purpose>-<timestamp>Minimal smoke command:
vmctl create \
--name vmctl-test-smoke-<timestamp> \
--template alma10 \
--cpu 2 \
--ram-mb 4096 \
--disk-gb 40 \
--user hermes \
--ssh-key-file /tmp/vmctl_test_key.pub
Then:
vmctl status <name>
Success criteria:
readyDelete+purge test VM after smoke run unless operator asked to keep it.
vmctl delete <name> --force
Important: purge uses deleted tombstone name, not original VM name.
# discover tombstone
python3 - <<'PY'
import glob, os
vm='<name>'
paths=glob.glob('/opt/hermes-vmctl/state/deleted/*.json')
c=[p for p in paths if vm in os.path.basename(p)]
if c:
c.sort(key=os.path.getmtime, reverse=True)
print(os.path.basename(c[0])[:-5])
PY
vmctl purge <deleted_name>
If ESXi has managed VM but state is missing:
vmctl recover --dry-run
vmctl recover --apply
Then run delete/purge again.
Report concise facts:
recover --dry-run actions countdeleted tombstone not found.mode confirms helper-only effective mode.preflight is green.doctor is green.create reaches ready.delete --force.recover --dry-run has no unexpected actions.