Skip to main content
Deployments & App Management

Introducing Claude skill for writing custom DollarDeploy services

Ask Claude to install anything on your DollarDeploy host — it writes a proper custom service repo that follows the contract, no SSH required.

Ruslan Gainutdinov

Installing extra software on a server usually means SSH, a pile of shell scripts, and remembering to make all of it idempotent so the next deploy doesn't break. We've packaged that whole workflow into a Claude skill. Now you describe what you want on the host, and Claude writes a proper DollarDeploy custom service for you — a small public repo that installs the software, reports its config and secrets back, and cleans up on remove.

It's part of the DollarDeploy agents plugin for Claude Code, alongside the CLI and template skills.

Why let Claude build your services

Built-in managed services — PostgreSQL, Redis, MongoDB, MariaDB, Docker, a firewall, disk encryption — cover the common cases with one click. Everything else is where the yak-shaving starts: a VPN agent, a message queue, a metrics exporter, an internal tool. You end up SSHing in, hand-writing an install script, and hoping it survives the next prepare.

A custom service turns that into a small, reusable repo instead. The catch is the conventions: the script has to be idempotent, it runs as the non-root user (but with sudo rights), secrets have to be echoed back with the right marker prefix so they persist, and a non-zero exit fails the whole host prepare. That's exactly the kind of detail an LLM is good at holding in its head — and exactly the kind of thing that's tedious to look up every time.

The skill teaches Claude those rules. You stay in plain language; Claude produces a repo that actually follows the contract.

What the custom service skill does

Ask Claude to install something on a host, and it scaffolds a service-<name> repo that DollarDeploy knows how to run:

  • A prepare.sh that's idempotent by default — installs are guarded with command -v and file checks, so re-running on every prepare is safe.
  • Secrets that persist. Generated values are echoed back with the mandatory SERVICE_CUSTOM_${SERVICE_ID}_ marker prefix, so DollarDeploy stores them and re-injects them as env vars on the next prepare.
  • A matching uninstall.sh so removing the service actually tears the software back down.
  • The right guard railsset -e, failing loudly on real errors, a lowercase README.md heading that becomes the on-host folder name, and a public repo so the host can clone it with no credentials.

Example: putting a host on your tailnet

Say you want a server on your Tailscale network. Ask Claude to create a custom Tailscale service, and it produces a repo like this:

README.md

# tailscale

Installs the Tailscale agent and brings the host onto your tailnet.

prepare.sh

#!/bin/bash
set -e

# Idempotent: skip if already installed
if ! command -v tailscale >/dev/null 2>&1; then
  echo "Installing tailscale"
  curl -fsSL https://tailscale.com/install.sh | sudo sh
fi

# Tailscale auth key, set as a host env var.
if [ -z "${TAILSCALE_AUTH_SECRET:-}" ]; then
  echo "tailscale: TAILSCALE_AUTH_SECRET is required (set it as a host env var)"
  exit 1
fi

sudo tailscale up --authkey "$TAILSCALE_AUTH_SECRET"

# Report the tailnet IP back to DollarDeploy
TS_IP=$(tailscale ip -4 2>/dev/null | head -n1 || true)
if [ -n "$TS_IP" ]; then
  echo "{{env:SERVICE_CUSTOM_${SERVICE_ID}_TAILSCALE_IP:$TS_IP}}"
fi

Push the repo public, open your host's Services tab, add a service of type Custom, and paste the URL. On the next prepare DollarDeploy clones it into ~/services/tailscale, runs prepare.sh, flips the service to active, and stores the tailnet IP for you. Remove the service and prepare again, and the optional uninstall.sh runs before the directory is deleted.

No SSH. No changes to DollarDeploy itself. Just a repo and a prepare.

Try it

Add the plugin marketplace in Claude Code:

/plugin marketplace add dollardeploy/agents

Then install the skills:

/plugin install dollardeploy-skills@dollardeploy-agents

Now just ask Claude to install something on your host — "add a Tailscale service", "put a Prometheus node exporter on this box" — and it will build the service for you. The custom services documentation has the full contract if you want to read along.

Building something with it? Tell us in Discord — we want to see what you put on your servers.

Updated on Aug 6, 2026