skills/vps-service-status/SKILL.md
Quick health checks for a Dockerized VPS. Use to verify services are running, check container status, view logs, or get a system overview (disk, memory, CPU). Read-only by design — anything that would change state is routed through the clipboard for the user to paste.
npx skillsauth add jwa91/agentskills vps-service-statusInstall 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.
Quick health checks over SSH for a VPS that hosts Docker services.
Direct ssh commands in this skill must be read-only. Any command that changes
state (sudo, systemctl, docker compose up/down/restart, prune, etc.) goes through
the clipboard so the user pastes it manually. This keeps the skill safe to run
without per-command confirmation. Do not relax this rule when extending the skill.
This skill assumes:
~/.ssh/config for the VPS (so ssh <alias>
connects without further flags). Below, <vps-host> is a placeholder for that
alias — replace with whatever you use (e.g. hetzner, prod, myvps).docker compose and live under a known root such as
/var/services/<service>/ or /srv/<service>/. Adjust paths to match your VPS.pbcopy (macOS). On Linux substitute xclip -selection clipboard
or wl-copy.If the user has not told you their SSH alias or service root, ask once before running.
ssh <vps-host> "echo '=== Containers ===' && docker ps --format 'table {{.Names}}\t{{.Status}}' && echo && echo '=== Disk ===' && df -h / && echo && echo '=== Memory ===' && free -h"
ssh <vps-host> "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'"
ssh <vps-host> "cd /var/services/<service> && docker compose logs --tail 30"
sudo over a non-interactive SSH command will fail (no TTY for the password
prompt), so these are copied to the clipboard for the user to paste after
SSH'ing in manually:
echo 'sudo systemctl status <unit> --no-pager' | pbcopy
echo 'sudo systemctl status caddy --no-pager' | pbcopy
echo 'sudo systemctl status webhook --no-pager' | pbcopy
echo 'sudo journalctl -u <unit> --since "1 hour ago" | grep -E "(Starting|finished|ERROR)"' | pbcopy
data-ai
Release the current project to the personal Homebrew tap from repo-local release config. Use when the user says "release", "ship", "cut a version", "publish", "make a new tag", or asks how to make a new version available via jwa91/tap.
tools
Use the `jwa-harden` CLI for secret-safe command execution, env-template discovery, and signing/notarization preflight checks. Trigger when a command needs secrets, when `.env.template` or 1Password references are involved, or before signed release flows.
documentation
Modify or extend the `jwa-tobrew` scaffolding system — the templates that `init` writes into target projects. Trigger when the user says "add a new scaffold kind", "change what init writes", "update the templates", or asks how the embedded templates are wired.
development
Detect and fix drift between a project and the conventions encoded in `jwa-tobrew`, prek, and the tap ADRs. Trigger when the user says "align", "any drift", "verify conventions", or asks why a particular file/symlink/script is required.