coolify-setup
Skill0 starsChanged 4 months agoMITView on GitHub
Run MCP setup preflight and wire Coolify project/environment/server linkage. Use when onboarding a new workspace or linking an existing Coolify project.
- Reads credentials
In this repository4 other files it gives its agents.
- .cursor/rules/gsd-ship-labels.mdcCursor rule
- coolify-deploySkill
- coolify-diagnoseSkill
- coolify-incidentSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 2 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 33
Run gh auth login (or set GH_TOKEN / GITHUB_TOKEN for headless)
- Distinctive: line 34
Do not poll or sleep inside the agent loop waiting for auth.
- Very specific: line 54
When deploy_and_watch: true, use deployment({ action: "watch", deployment_uuid, timeout: 300 }) with bounded timeout (max 1800s).
- Very specific: line 58
When set_env: true, provide exactly one env source (XOR):
- Very specific: line 63
Do not assume a workspace .env is auto-detected — pass env_file or env_content explicitly.
- Very specific: line 87
Never auto-push git from setup unless push: true on greenfield wire.
- Distinctive: line 133
After setup/wire, use MCP tools for application log triage (not part of the setup wizard).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Coolify Setup
Install this skill pack (Cursor, Claude Code, Codex):
npx skills add clezcoding/awesome-coolify -a cursor -a claude-code -a codexMCP prompt analog: new-project (src/mcp/prompts.ts) — primary entry is MCP setup tool per D-01.
Related skills: coolify-deploy · coolify-diagnose · coolify-incident
MCP setup tool
Primary entry: MCP setup tool (setupActionsCatalog):
preflight()— verify GitHub CLI presence and auth (headless-safe)wire(mode, ...)— provision or link Coolify resourcesresume(mode?, ...)— re-run preflight after human gh auth
Safety: optional instance routing · no auto-push git by default · gh soft-pause (no in-tool poll)
Workflow
- Preflight — call
setup({ action: "preflight" }). - On
COOLIFY_SETUP_PAUSED— stop for human action:- Install gh if missing: cli.github.com
- Run
gh auth login(or setGH_TOKEN/GITHUB_TOKENfor headless) - Do not poll or sleep inside the agent loop waiting for auth.
- Resume — after auth succeeds, call
setup({ action: "resume", ... })with the same wire params you will use for step 4. - Wire — call
setup({ action: "wire", mode: "greenfield" | "link-existing", ... }).
Modes
| Mode | Use when |
greenfield | Create new Coolify project/environment and provision via recipe |
link-existing | Attach workspace to an existing Coolify project/server |
Optional flags (default off)
Pass explicitly only when needed:
include_domains— attach domains after wire (greenfield, or link-existing withapplication_uuid)set_env— sync environment variables after wire (greenfield, or link-existing withapplication_uuid). When enabled, pass exactly one ofenv_file(local.envpath) orenv_content(inline.envtext) — no workspace auto-detect. Application resources only (not one-click services).deploy_and_watch— trigger deploy and boundeddeployment.watchafter wire (greenfield, or link-existing withapplication_uuid)push— on greenfield only; defaultfalseomitsgh --push. Setpush: trueto push after repo create.
When deploy_and_watch: true, use deployment({ action: "watch", deployment_uuid, timeout: 300 }) with bounded timeout (max 1800s). On COOLIFY_WATCH_TIMEOUT, re-call watch with the same deployment_uuid.
set_env params
When set_env: true, provide exactly one env source (XOR):
env_file— local filesystem path to a.envfileenv_content— inline.envtext (e.g.FOO=bar\nBAZ=qux)
Do not assume a workspace .env is auto-detected — pass env_file or env_content explicitly.
Works on greenfield and link-existing when the wired resource is an application (application_uuid required for link-existing optional flags). Rejects one-click service resources.
Setup apply uses implicit confirm: true and does not pass conflict_policy on the delegated envs:sync. On COOLIFY_CONFIRM_REQUIRED (value conflicts), stop and ask the human — conflicting keys are not applied until the human chooses a policy. Retry with explicit policy via:
application({
action: "envs:sync",
uuid: "<application-uuid>",
env_content: "FOO=bar",
confirm: true,
conflict_policy: "overwrite", // or keep_remote or abort
})Recipe types (greenfield)
Wire with recipe_type matching recipeActionsCatalog:
create-git-app·create-app-db·create-one-click
Git policy
Never auto-push git from setup unless push: true on greenfield wire. Default: instruct the human to push manually after repo create.
Safety
confirm— not required for setup wire/recipe create per established pattern; confirm gates apply on destructive ops in sibling skills.reveal— opt-in on env/log reads when syncing secrets after wire.
Example calls
setup({ action: "preflight" })
// After COOLIFY_SETUP_PAUSED + human gh auth login:
setup({ action: "resume", mode: "greenfield", server_uuid: "<uuid>", recipe_type: "create-git-app" })
setup({
action: "wire",
mode: "greenfield",
server_uuid: "<uuid>",
recipe_type: "create-git-app",
push: false,
})
setup({
action: "wire",
mode: "link-existing",
project_uuid: "<uuid>",
environment_uuid: "<uuid>",
server_uuid: "<uuid>",
application_uuid: "<uuid>",
})
setup({
action: "wire",
mode: "link-existing",
project_uuid: "<uuid>",
environment_uuid: "<uuid>",
server_uuid: "<uuid>",
application_uuid: "<uuid>",
set_env: true,
env_content: "FOO=bar\nBAZ=qux",
})App log troubleshooting
After setup/wire, use MCP tools for application log triage (not part of the setup wizard). Application-only — Coolify 4.1.2 has no service or database log tools.
- Capability check —
system({ action: "version" })→ inspectcapabilities.diagnose_logsandcapabilities.application_logs_follow - One-shot triage + tail —
diagnose.logsviadiagnose({ action: "logs", mode: "full", uuid: "<uuid>" }) - Live symptom —
application({ action: "logs", uuid: "<uuid>", follow: true })whenapplication_logs_followis supported - Build/deploy logs —
deployment({ action: "logs", deployment_uuid: "<uuid>" })on deploy suspicion
Deeper runbooks: coolify-incident · coolify-deploy · coolify-diagnose
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

