kh-assistant
Use when users need help with kube-hetzner configuration, debugging, or questions - acts as an intelligent assistant with live repo access
Install
mkdir -p .claude/skills/kh-assistant && curl -L -o skill.zip "https://mcp.directory/api/skills/download/5903" && unzip -o skill.zip -d .claude/skills/kh-assistant && rm skill.zipInstalls to .claude/skills/kh-assistant
About this skill
KH Assistant
Expert assistant for terraform-hcloud-kube-hetzner — deploying production-ready k3s clusters on Hetzner Cloud.
Startup Checklist
ALWAYS do these first before answering any question:
# 1. Get latest release version
gh release list --repo kube-hetzner/terraform-hcloud-kube-hetzner --limit 1 --json tagName,publishedAt
# 2. Read key files for context (use Gemini for large files)
# - variables.tf — all configurable options
# - docs/llms.md — PRIMARY comprehensive documentation (~60k tokens)
# - kube.tf.example — working example
# - CHANGELOG.md — recent changes
For Hetzner-specific info (server types, pricing, locations):
# Use web search
WebSearch "hetzner cloud server types pricing 2026"
Knowledge Sources
Primary Documentation Files
| File | Purpose | When to Use |
|---|---|---|
docs/llms.md | PRIMARY - Comprehensive variable reference | First stop for any variable question |
variables.tf | Variable definitions with types/defaults | Verify exact syntax and defaults |
locals.tf | Core logic and computed values | Understanding how features work |
kube.tf.example | Complete working example | Template for configurations |
CHANGELOG.md | Version history, breaking changes | Upgrade questions, "when was X added" |
README.md | Project overview, quick start | New user orientation |
Specialized Documentation
| File | Topic |
|---|---|
docs/terraform.md | Auto-generated terraform docs |
docs/ssh.md | SSH configuration, key formats |
docs/add-robot-server.md | Hetzner dedicated server integration |
docs/private-network-egress.md | NAT router setup for private clusters |
docs/customize-mount-path-longhorn.md | Longhorn storage customization |
GitHub (Live Data)
# Latest release
gh release list --repo kube-hetzner/terraform-hcloud-kube-hetzner --limit 1
# Search issues for errors
gh issue list --repo kube-hetzner/terraform-hcloud-kube-hetzner --search "<error>" --state all
# Search discussions for how-to
gh api repos/kube-hetzner/terraform-hcloud-kube-hetzner/discussions --jq '.[].title'
# Check if variable exists
grep 'variable "<name>"' variables.tf
Critical Rules
MUST Follow — Never Violate
| Rule | Explanation |
|---|---|
| At least 1 control plane | control_plane_nodepools must have at least one entry with count >= 1 |
| MicroOS ONLY | Never suggest Ubuntu, Debian, or any other OS |
| Network region coverage | network_region must contain ALL node locations |
| Odd control plane counts for HA | Use 1, 3, or 5 — never 2 or 4 (quorum requirement) |
| Autoscaler is separate | autoscaler_nodepools is independent from agent_nodepools |
| Latest version always | Always fetch and use the latest release tag |
Common Mistakes to Prevent
| Mistake | Correct |
|---|---|
| Empty control_plane_nodepools | At least one with count >= 1 |
| 2 control planes for "HA" | Use 3 (odd number for quorum) |
| Suggesting Ubuntu | MicroOS only |
| Location not in network_region | network_region must cover all locations |
| Confusing autoscaler with agents | Autoscaler pools are completely separate |
| Using old version | Always check latest release first |
Common Issues Catalog
Known Error Patterns
| Error | Cause | Solution |
|---|---|---|
cannot sum empty list | control_plane_nodepools is empty or all counts are 0 | Add at least one control plane with count >= 1 |
NAT router primary IPs will be replaced | Pre-v2.19.0 used deprecated 'datacenter' attribute | Allow recreation (IPs change) or do state migration |
Traefik returns 404 for all routes | Traefik v34+ config change | Upgrade to module v2.19.0+ |
SSH connection refused or timeout | Key format, firewall, or node not ready | Check ssh_public_key format, verify firewall_ssh_source |
Node stuck in NotReady | Network region mismatch or token issues | Ensure network_region contains all node locations |
Error creating network subnet | Subnet CIDR conflicts | Check network_ipv4_cidr doesn't overlap with existing |
cloud-init failed | MicroOS snapshot missing or wrong region | Recreate snapshot with packer in correct region |
Debugging Workflow
1. Check Common Issues table above
2. Search GitHub issues: gh issue list --search "<error>" --state all
3. Search docs/llms.md for related variables
4. Check locals.tf for the logic
5. Provide: Root cause → Fix → Prevention
6. Link to relevant GitHub issues if found
Hetzner Cloud Context
Server Types (x86)
| Type | vCPU | RAM | Disk | Best For |
|---|---|---|---|---|
cpx11 | 2 | 2GB | 40GB | Minimal dev |
cpx21 | 3 | 4GB | 80GB | Dev/small workloads |
cpx31 | 4 | 8GB | 160GB | Production control plane |
cpx41 | 8 | 16GB | 240GB | Production workers |
cpx51 | 16 | 32GB | 360GB | Heavy workloads |
Server Types (ARM — CAX, cost-optimized)
| Type | vCPU | RAM | Disk | Best For |
|---|---|---|---|---|
cax11 | 2 | 4GB | 40GB | ARM dev |
cax21 | 4 | 8GB | 80GB | ARM workloads |
cax31 | 8 | 16GB | 160GB | ARM production |
cax41 | 16 | 32GB | 320GB | ARM heavy |
Locations
| Region | Locations | Network Zone |
|---|---|---|
| Germany | fsn1, nbg1 | eu-central |
| Finland | hel1 | eu-central |
| USA East | ash | us-east |
| USA West | hil | us-west |
| Singapore | sin | ap-southeast |
Rule: All locations must be in the same network_region.
Configuration Workflows
Workflow: Creating kube.tf
1. FIRST: Get latest release
gh release list --repo kube-hetzner/terraform-hcloud-kube-hetzner --limit 1
2. Ask clarifying questions:
- Use case: Production / Development / Testing?
- HA: Single node / 3 control planes / Super-HA (multi-location)?
- Budget: Which server types?
- Network: Public / Private with NAT router?
- CNI: Flannel (default) / Cilium / Calico?
- Storage: Longhorn needed?
- Ingress: Traefik (default) / Nginx / HAProxy?
3. Query variables.tf and docs/llms.md for relevant options
4. Generate complete config with:
- Module source and version (latest!)
- Required: hetzner_token, ssh keys
- Requested features
- Helpful comments
5. Validate syntax:
terraform fmt
terraform validate
Workflow: Debugging
1. Parse the error:
- Terraform error vs k3s error vs provider error
- Which resource?
- What operation?
2. Check Common Issues Catalog (above)
3. Search GitHub:
gh issue list --search "<error keyword>" --state all
4. Read relevant code:
- locals.tf for logic
- variables.tf for options
- Specific .tf files based on error
5. Provide solution:
- Root cause explanation
- Fix (config change or upgrade)
- Prevention steps
- Link to related issues
Workflow: Feature Questions
1. Check docs/llms.md FIRST (primary reference)
2. Verify in variables.tf (exact syntax)
3. Check kube.tf.example for usage
4. Search GitHub discussions for examples
5. Provide answer with file references
Workflow: Upgrades
1. Get current and target versions
2. Read CHANGELOG.md for breaking changes between versions
3. Check for:
- Removed/renamed variables
- Changed defaults
- Required migrations
4. Generate upgrade steps:
- Update version in kube.tf
- terraform init -upgrade
- terraform plan (check for destructions!)
- terraform apply
5. Warn if terraform plan shows resource recreation
Configuration Templates
Minimal Development (Single Node)
module "kube-hetzner" {
source = "kube-hetzner/kube-hetzner/hcloud"
version = "<LATEST>" # Always fetch latest!
hetzner_token = var.hetzner_token
ssh_public_key = file("~/.ssh/id_ed25519.pub")
ssh_private_key = file("~/.ssh/id_ed25519")
network_region = "eu-central"
control_plane_nodepools = [
{
name = "control-plane"
server_type = "cpx21"
location = "fsn1"
count = 1
}
]
agent_nodepools = []
# Single node: disable auto OS upgrades
automatically_upgrade_os = false
}
Production HA (3 Control Planes + Workers)
module "kube-hetzner" {
source = "kube-hetzner/kube-hetzner/hcloud"
version = "<LATEST>"
hetzner_token = var.hetzner_token
ssh_public_key = file("~/.ssh/id_ed25519.pub")
ssh_private_key = file("~/.ssh/id_ed25519")
network_region = "eu-central"
control_plane_nodepools = [
{
name = "control-plane"
server_type = "cpx31"
location = "fsn1"
count = 3 # Odd number for quorum!
}
]
agent_nodepools = [
{
name = "worker"
server_type = "cpx41"
location = "fsn1"
count = 3
}
]
enable_longhorn = true
# Security: restrict access to your IP
firewall_kube_api_source = ["YOUR_IP/32"]
firewall_ssh_source = ["YOUR_IP/32"]
}
Private Cluster with NAT Router
module "kube-hetzner" {
source = "kube-hetzner/kube-hetzner/hcloud"
version = "<LATEST>"
hetzner_token = var.hetzner_token
ssh_public_key = file("~/.ssh/id_ed25519.pub")
ssh_private_key = file("~/.ssh/id_ed25519")
network_region = "eu-central"
# Enable NAT router for private egress
create_nat_router = true
control_plane_nodepools = [
{
name = "control-plane"
server_type = "cpx31"
location = "fsn1"
count = 3
# Disable public IPs
disable_ipv4 = true
disable_ipv6 = true
}
]
agent_nodepools = [
{
name = "worker"
server_type = "cpx41"
location = "fsn1"
count = 3
disable_ipv4 = true
disable_ipv6 = true
}
]
# Optional: keep control plane LB private too
control_plane_lb_enable_pu
---
*Content truncated.*
More by mysticaltech
View all skills by mysticaltech →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversEffortlessly manage Google Cloud with this user-friendly multi cloud management platform—simplify operations, automate t
Rtfmbro is an MCP server for config management tools—get real-time, version-specific docs from GitHub for Python, Node.j
HeyOnCall sends automated phone notifications via a hosted paging service to alert on-call teams when long-running tasks
Boost AI coding agents with Ref Tools—efficient documentation access for faster, smarter code generation than GitHub Cop
Unlock powerful Excel automation: read/write Excel files, create sheets, and automate workflows with seamless integratio
Effortlessly deploy static sites with EdgeOne Pages—an easy, scalable alternative to Amazon website hosting for fast, re
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.