chess-teacher-vps

Inspect production Hetzner VPS pods, logs, and Postgres via whitelisted read-only SSH commands.

1|Updated Apr 30, 2026
One-click install
npx skills add https://github.com/daniel-brus/chess_teacher --skill chess-teacher-vps-daniel-brus
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: chess-teacher-vps
Source: https://github.com/daniel-brus/chess_teacher/tree/main/.agents/skills/chess-teacher-vps
Command: npx skills add https://github.com/daniel-brus/chess_teacher --skill chess-teacher-vps-daniel-brus

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? Production infrastructure on a firewalled Hetzner VPS is hard to inspect safely: ad-hoc SSH commands risk accidental mutations, and the production Postgres database is unreachable from a local machine. This Skill provides a strictly read-only, whitelisted command interface for checking cluster health and querying production data without any risk of modifying live state. ## Core Features & Use Cases - Read-only Kubernetes inspection: Run whitelisted kubectl get, describe, logs, rollout status, and cluster-info commands against the chess-teacher namespace over SSH, with JSON output. - Production database queries through the cluster: Execute validated read-only queries (count, read, schema, exists, unique, all-match) against firewalled prod Postgres by exec-ing into the streamlit pod. - Host health checks: Check disk (df -h), memory (free -m), and uptime on the VPS, with SSH credentials pulled automatically from the Doppler ci config. - Use Case: A user asks "why is the streamlit pod failing?" — the agent runs pods, then describe-pod and logs via the script, interprets the JSON output, and answers in plain language without ever opening an interactive shell. ## Quick Start Ask the agent to check whether the production streamlit pods are healthy on the Hetzner VPS and show recent logs if anything looks wrong.

Frequently Asked Questions about chess-teacher-vps

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I check production pod status on a k8s cluster via SSH?▼

Run the vps_query.py script with the `pods` subcommand to execute `kubectl get pods -n chess-teacher -o wide` over SSH. The script fetches SSH credentials from the Doppler ci config automatically and returns structured JSON with stdout, stderr, and exit code.

How to query a firewalled production Postgres database from outside the network?▼

Use the db-* subcommands (db-count, db-read, db-schema, db-exists, db-unique) which run `kubectl exec` into the streamlit deployment and execute a validated read-only query script inside the cluster. The database uses the pod's injected POSTGRES_* environment variables, so no direct network access is needed.

Can this skill restart pods or deploy changes to production?▼

No. The skill is strictly read-only and explicitly forbids kubectl apply, delete, patch, scale, rollout restart, and any mutating database operations. Mutating tasks like backfills are run manually by the user via a separate script job workflow.

Why does SSH fail with UNPROTECTED PRIVATE KEY FILE on Windows?▼

OpenSSH rejects private keys readable by other principals, which happens when sandbox tools add ACLs to files in %TEMP%. The script fixes this by writing the deploy key to %LOCALAPPDATA%\chess-teacher-agent with LF newlines and locking down permissions via icacls.

What happens if I pass a SQL write statement to the db commands?▼

The script validates all SQL fragments locally before sending anything over SSH. Fragments containing semicolons or write keywords like INSERT, UPDATE, DELETE, DROP, or ALTER are rejected immediately with an error, so no mutating statement can reach the production database.