modules/programs/agents/shared/skills/proxmox/SKILL.md
Proxmox VE sysadmin for home lab infrastructure. Use when triaging services, checking container/VM status, viewing logs, managing resources, or debugging self-hosted apps. Can discover infrastructure dynamically via SSH.
npx skillsauth add MichaelVessia/nixos-config proxmoxInstall 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.
Sysadmin skill for managing Proxmox VE home lab infrastructure.
# Proxmox host (requires 2FA - password then OTP)
ssh proxmox
# Synology NAS (see ~/.ssh/config for Host entry)
ssh nas
# All containers with status, IPs
ssh proxmox "pct list"
# All VMs
ssh proxmox "qm list"
# Detailed resource usage (CPU, memory, disk) for everything
ssh proxmox "pvesh get /cluster/resources --type vm --output-format json" | jq
# Container config (shows IP, mounts, resources)
ssh proxmox "pct config <CTID>"
# VM config
ssh proxmox "qm config <VMID>"
# Find container IP
ssh proxmox "pct exec <CTID> -- ip -4 addr show eth0"
# What's listening in a container
ssh proxmox "pct exec <CTID> -- ss -tlnp"
# Host network config
ssh proxmox "cat /etc/network/interfaces"
# Storage pools
ssh proxmox "pvesm status"
# Storage config
ssh proxmox "cat /etc/pve/storage.cfg"
# NFS mounts
ssh proxmox "mount | grep nfs"
# Disk usage
ssh proxmox "df -h"
# Start/stop/restart
ssh proxmox "pct start <CTID>"
ssh proxmox "pct shutdown <CTID>" # graceful
ssh proxmox "pct stop <CTID>" # force
ssh proxmox "pct reboot <CTID>"
# Enter container shell
ssh proxmox "pct enter <CTID>"
# Run command in container
ssh proxmox "pct exec <CTID> -- <command>"
ssh proxmox "qm start <VMID>"
ssh proxmox "qm shutdown <VMID>"
ssh proxmox "qm stop <VMID>" # force
ssh proxmox "qm reboot <VMID>"
ssh proxmox "qm status <VMID>"
# List systemd services in container
ssh proxmox "pct exec <CTID> -- systemctl list-units --type=service --state=running"
# Check specific service
ssh proxmox "pct exec <CTID> -- systemctl status <service>"
# Service logs
ssh proxmox "pct exec <CTID> -- journalctl -u <service> -n 100 --no-pager"
# Follow logs live
ssh proxmox "pct exec <CTID> -- journalctl -u <service> -f"
# All recent logs in container
ssh proxmox "pct exec <CTID> -- journalctl -n 100 --no-pager"
Most containers run a single main service. Discover with:
ssh proxmox "pct exec <CTID> -- systemctl list-units --type=service --state=running" | grep -v systemd
Typical patterns: jellyfin, AdGuardHome, caddy, sonarr, radarr, sabnzbd, tailscaled
# Overview
ssh proxmox "pvesh get /nodes/pve/status"
# Quick health
ssh proxmox "uptime && free -h && df -h /"
# ZFS status
ssh proxmox "zpool status"
# Host logs
ssh proxmox "journalctl -n 100 --no-pager"
# Backup job config
ssh proxmox "cat /etc/pve/jobs.cfg"
# List backups in storage
ssh proxmox "pvesm list <storage-name> --content backup"
ssh proxmox "pct config <CTID>" # check config
ssh proxmox "df -h" # disk space
ssh proxmox "ls /var/lock/pve-manager/pve-config/" # stale locks
# 1. Container running?
ssh proxmox "pct status <CTID>"
# 2. Service running?
ssh proxmox "pct exec <CTID> -- systemctl status <service>"
# 3. Logs
ssh proxmox "pct exec <CTID> -- journalctl -u <service> -n 100 --no-pager"
# 4. Port listening?
ssh proxmox "pct exec <CTID> -- ss -tlnp"
# 5. Restart
ssh proxmox "pct exec <CTID> -- systemctl restart <service>"
ssh proxmox "mount | grep nfs" # current mounts
ssh proxmox "cat /etc/fstab | grep nfs" # configured mounts
ssh proxmox "mount -a" # remount all
# Find tailscale container
ssh proxmox "pct list" | grep -i tail
# Check status (replace CTID)
ssh proxmox "pct exec <CTID> -- tailscale status"
Detailed infrastructure docs (IPs, service configs, setup history) are in:
~/obsidian/Notes/PROXMOX_SETUP.md
Read this file if you need static reference info not discoverable via commands.
Important: After making significant changes to the Proxmox setup (adding/removing
containers or VMs, resizing disks, changing IPs, modifying mounts, updating
services), read and update ~/obsidian/Notes/PROXMOX_SETUP.md to reflect the
new state. Keep the note in sync with reality.
tools
User guide for the local squash-safe `stack` CLI for stacked PR/MR repair on GitHub and GitLab. Use when someone asks how to inspect, track, sync, merge, document, or undo stacked pull requests / merge requests in squash-merge repositories. Prefer this tool over GitHub's `gh stack` command for this workflow.
tools
Control herdr from inside it. Manage workspaces and tabs, split panes, spawn agents, read output, and wait for state changes — all via CLI commands that talk to the running herdr instance over a local unix socket. Use when running inside herdr (HERDR_ENV=1).
development
Inspect my self-hosted AutoCaliWeb library. Use when the user asks about AutoCaliWeb, books in Calibre, OPDS status, recent imports, shelves, catalog stats, or wants to search the ebook library.
data-ai
Subscribe a YouTube channel in TubeArchivist, queue its top videos by views from recent uploads, wait for the first file, scan Jellyfin, and rename + lock the channel folder to a friendly display name. Use when the user says "add a youtube channel", "subscribe to <channel>", or wants a curated TubeArchivist + Jellyfin import for a creator.