Claude-skill-registry kamal-deploy
Deploy Docker applications using Kamal 2 with zero-downtime and automatic SSL. Use this skill when (1) setting up new Kamal deployments, (2) generating deploy.yml configuration, (3) deploying apps that lack health endpoints (using Caddy workaround).
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/kamal-deploy" ~/.claude/skills/majiayu000-claude-skill-registry-kamal-deploy && rm -rf "$T"
manifest:
skills/data/kamal-deploy/SKILL.mdsource content
Kamal 2 Deployment
Workflow
Ask user for:
- Domain — e.g.,
(service name:app.example.com
)app_example_com - Server IP(s)
- Health endpoint — Does app return 200 on
without auth?/up
Generate config/deploy.yml
service: {{DOMAIN_UNDERSCORED}} image: jalen0x/{{DOMAIN_UNDERSCORED}} servers: web: hosts: - {{SERVER_IP}} proxy: ssl: true host: {{DOMAIN}} registry: username: jalen0x password: - KAMAL_REGISTRY_PASSWORD ssh: user: ubuntu builder: arch: amd64
Health Endpoint
App must respond 200 on
/up at port 80 (default).
Custom path: Add
healthcheck.path to proxy config.
No health endpoint: Use Caddy. Copy templates from
assets/ and customize:
→ projectassets/CaddyfileCaddyfile
→ projectassets/start.shstart.sh
Generate Dockerfile:
FROM {{BASE_IMAGE}} RUN apk add --no-cache caddy COPY Caddyfile /Caddyfile COPY start.sh /start.sh RUN chmod +x /start.sh ENTRYPOINT ["/bin/sh", "/start.sh"]
Commands
kamal setup # First-time kamal deploy # Deploy