.claude/skills/ts-caprover/SKILL.md
Expert guidance for CapRover, the open-source PaaS that turns any Linux server into a Heroku-like platform with automatic HTTPS, one-click app deployment, and Docker-based containerization. Helps developers deploy applications, configure custom domains, and manage the CapRover cluster.
npx skillsauth add eliferjunior/Claude caproverInstall 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.
CapRover, the open-source PaaS that turns any Linux server into a Heroku-like platform with automatic HTTPS, one-click app deployment, and Docker-based containerization. Helps developers deploy applications, configure custom domains, and manage the CapRover cluster.
# Prerequisites: Ubuntu 20.04+, Docker installed, ports 80/443/3000 open
# Install CapRover
docker run -p 80:80 -p 443:443 -p 3000:3000 \
-e ACCEPTED_TERMS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /captain:/captain \
caprover/caprover
# Install CLI
npm install -g caprover
# Set up server (interactive)
caprover serversetup
# → Enter: IP address, root domain (*.apps.myserver.com), email for SSL, password
# Login
caprover login
# → URL: https://captain.apps.myserver.com
Deploy via CLI, Git, or Dockerfile:
# Method 1: CLI deploy from current directory
caprover deploy -a my-api
# Method 2: Deploy with a captain-definition file
cat > captain-definition << 'EOF'
{
"schemaVersion": 2,
"dockerfilePath": "./Dockerfile"
}
EOF
caprover deploy -a my-api
// captain-definition — Deployment configuration
// Option A: Dockerfile-based
{
"schemaVersion": 2,
"dockerfilePath": "./Dockerfile"
}
// Option B: Image-based (pre-built)
{
"schemaVersion": 2,
"imageName": "ghcr.io/myorg/my-api:v1.2.3"
}
// Option C: Docker Compose (multi-container)
{
"schemaVersion": 2,
"dockerComposeFileLocation": "./docker-compose.yml"
}
Deploy popular software instantly through the web UI:
## Available One-Click Apps (examples)
- **Databases**: PostgreSQL, MySQL, MongoDB, Redis, MariaDB
- **CMS**: WordPress, Ghost, Strapi, Directus
- **DevOps**: GitLab, Drone CI, Jenkins, Portainer
- **Monitoring**: Grafana, Prometheus, Uptime Kuma, Plausible
- **Communication**: Mattermost, Rocket.Chat, n8n
- **Storage**: MinIO, Nextcloud, Filebrowser
- **Analytics**: Matomo, PostHog, Umami
// scripts/caprover-api.ts — CapRover API client
const CAPROVER_URL = "https://captain.apps.myserver.com";
async function caproverApi(path: string, data?: any) {
const token = process.env.CAPROVER_TOKEN!;
const response = await fetch(`${CAPROVER_URL}/api/v2${path}`, {
method: data ? "POST" : "GET",
headers: {
"Content-Type": "application/json",
"x-captain-auth": token,
},
body: data ? JSON.stringify(data) : undefined,
});
const result = await response.json();
if (result.status !== 100) throw new Error(result.description);
return result.data;
}
// Create a new app
async function createApp(appName: string) {
return caproverApi("/user/apps/appDefinitions/register", {
appName,
hasPersistentData: false,
});
}
// Update environment variables
async function setEnvVars(appName: string, envVars: { key: string; value: string }[]) {
return caproverApi("/user/apps/appDefinitions/update", {
appName,
envVars,
});
}
// Enable SSL for app
async function enableSsl(appName: string) {
return caproverApi("/user/apps/appDefinitions/enablecustomdomainssl", {
appName,
customDomain: `${appName}.apps.myserver.com`,
});
}
// Scale app
async function scaleApp(appName: string, instanceCount: number) {
return caproverApi("/user/apps/appDefinitions/update", {
appName,
instanceCount,
});
}
// Add custom domain
async function addCustomDomain(appName: string, domain: string) {
return caproverApi("/user/apps/appDefinitions/customdomain", {
appName,
customDomain: domain,
});
}
Configure volumes for stateful applications:
# Via CLI or captain-definition, define persistent directories
# In CapRover dashboard: App → App Configs → Persistent Directories
# Example persistent paths:
# /app/uploads → Store user-uploaded files
# /app/data → Application data directory
# /var/log/app → Log files
Scale beyond a single server:
# On the main server: get join token
# Dashboard → Cluster → Add Worker Node
# On the worker server:
docker swarm join --token SWMTKN-xxx manager-ip:2377
# CapRover automatically distributes containers across nodes
# Use placement constraints for specific workloads:
# Dashboard → App → App Configs → Node Placement
User request:
I have a Node.js API and a React frontend running in Docker. Set up Caprover for monitoring/deployment.
The agent creates the necessary configuration files based on patterns like # Prerequisites: Ubuntu 20.04+, Docker installed, ports 80/4, sets up the integration with the existing Docker setup, configures appropriate defaults for a Node.js + React stack, and provides verification commands to confirm everything is working.
User request:
Caprover is showing errors in our deploy applications. Here are the logs: [error output]
The agent analyzes the error output, identifies the root cause by cross-referencing with common Caprover issues, applies the fix (updating configuration, adjusting resource limits, or correcting syntax), and verifies the resolution with appropriate health checks.
*.apps.yourdomain.com to your server IP before installation; SSL won't work without itdevelopment
Expert guidance for Fireworks AI, the platform for running open-source LLMs (Llama, Mixtral, Qwen, etc.) with enterprise-grade speed and reliability. Helps developers integrate Fireworks' inference API, fine-tune models, and deploy custom model endpoints with function calling and structured output support.
development
Convert any website into clean, structured data with Firecrawl — API-first web scraping service. Use when someone asks to "turn a website into markdown", "scrape website for LLM", "Firecrawl", "extract website content as clean text", "crawl and convert to structured data", or "scrape website for RAG". Covers single-page scraping, full-site crawling, structured extraction, and LLM-ready output.
tools
Expert guidance for Firebase, Google's platform for building and scaling web and mobile applications. Helps developers set up authentication, Firestore/Realtime Database, Cloud Functions, hosting, storage, and analytics using Firebase's SDK and CLI.
development
When the user needs to build file upload functionality for a web application. Use when the user mentions "file upload," "image upload," "upload endpoint," "multipart upload," "presigned URL," "S3 upload," "file validation," "upload to cloud storage," or "accept user files." Handles upload endpoints, file validation (type, size, magic bytes), cloud storage integration, and upload status tracking. For image/video processing after upload, see media-transcoder.