Introducing the DollarDeploy Claude skill for app templates
Point Claude at a repo and it writes a valid DollarDeploy template — right app type, loopback ports, generated secrets — ready to open as a pull request.
The DollarDeploy catalog at dollardeploy.com/r is a list of apps you can deploy to a server you own in one click. Every entry is a template — a small config file that tells the platform how to build the app, what it needs, and which env vars to set. We've turned writing one into a Claude skill: point Claude at a repo, and it produces a valid template, ready to open as a pull request.
It ships in the DollarDeploy agents plugin for Claude Code, next to the CLI and custom service skills.
Why let Claude write the template
A template is just a .dollardeploy.yml, but a correct one carries a lot of quiet rules. The id has to match the directory name. Published ports need to bind to 127.0.0.1 so DollarDeploy's reverse proxy can handle TLS. Secrets should use ${GENERATED_PWD} or ${GENERATED_SECRET} so every deploy gets its own, instead of being hardcoded. A docker-compose app has to declare services: [docker] or the deploy fails on a host with no Docker. And templates.json is generated — edit it by hand and a GitHub Action overwrites your work on the next merge.
None of that is hard, but all of it is easy to get subtly wrong. The skill hands Claude the schema, the app types, the interpolation variables, and the common mistakes — so what it writes actually parses and deploys.
What the template skill does
Describe the app you want in the catalog, and Claude assembles the template directory for you:
- Picks the right app type —
next,react,deno,java,php,docker-compose, ornativewith the build/start commands filled in. - Wires up env correctly —
${APP_URL},${PORT}, and generated secrets that persist across redeploys and are auto-marked secret in the UI. - Gets the compose details right — loopback-bound ports, named volumes for persistence,
services: [docker]. - Follows the publish workflow — one directory per template, a matching
id, and files referenced by path so the generator can inline them, leavingtemplates.jsonfor the Action to rebuild.
Example: a one-click Ghost CMS
Ask Claude to add Ghost to the catalog, and it produces a directory with a compose file and a config like this:
ghost-cms/.dollardeploy.yml
id: ghost-cms
name: Ghost CMS
intro: "Independent platform for publishing by web and email newsletter."
logo: https://raw.githubusercontent.com/dollardeploy/templates/refs/heads/main/ghost-cms/logo.png
tags: [cms, blog, oss, popular]
deployTime: ~3 minutes
requirements:
memory: 2048
cpu: 2
storage: 10
services:
- docker
app:
type: docker-compose
repositoryUrl: https://github.com/dollardeploy/templates
sourcePath: ghost-cms
sourceBranch: main
dockerComposeFile: docker-compose.yml
env:
SERVER_URL: ${APP_URL}
MYSQL_PASSWORD: ${GENERATED_PWD}
PORT: 3000
Validate it parses with node index.js, open a pull request against github.com/dollardeploy/templates, and on merge the Generate Templates Action rebuilds templates.json and redeploys the demo. Your app then shows up in the catalog at /r, one click away for anyone.
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 ask Claude to "add my app to the DollarDeploy catalog" or "make a one-click template for this repo," and it will draft the template and the pull request. The template documentation has the full schema.
Shipped a template? Show us in Discord — we love adding community apps to the catalog.