agentleFS
clezcodingclezcoding/awesome-coolify/skills/coolify-setup/SKILL.md

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

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
  1. Very specific:

    Run gh auth login (or set GH_TOKEN / GITHUB_TOKEN for headless)

    line 33
  2. Distinctive:

    Do not poll or sleep inside the agent loop waiting for auth.

    line 34
  3. Very specific:

    When deploy_and_watch: true, use deployment({ action: "watch", deployment_uuid, timeout: 300 }) with bounded timeout (max 1800s).

    line 54
  4. Very specific:

    When set_env: true, provide exactly one env source (XOR):

    line 58
  5. Very specific:

    Do not assume a workspace .env is auto-detected — pass env_file or env_content explicitly.

    line 63
  6. Very specific:

    Never auto-push git from setup unless push: true on greenfield wire.

    line 87
  7. Distinctive:

    After setup/wire, use MCP tools for application log triage (not part of the setup wizard).

    line 133

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Coolify Setup

Install this skill pack (Cursor, Claude Code, Codex):

npx skills add clezcoding/awesome-coolify -a cursor -a claude-code -a codex

MCP 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 resources
  • resume(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

  1. Preflight — call setup({ action: "preflight" }).
  2. On COOLIFY_SETUP_PAUSED — stop for human action:
    • Install gh if missing: cli.github.com
    • Run gh auth login (or set GH_TOKEN / GITHUB_TOKEN for headless)
    • Do not poll or sleep inside the agent loop waiting for auth.
  3. Resume — after auth succeeds, call setup({ action: "resume", ... }) with the same wire params you will use for step 4.
  4. Wire — call setup({ action: "wire", mode: "greenfield" | "link-existing", ... }).

Modes

ModeUse when
greenfieldCreate new Coolify project/environment and provision via recipe
link-existingAttach 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 with application_uuid)
  • set_env — sync environment variables after wire (greenfield, or link-existing with application_uuid). When enabled, pass exactly one of env_file (local .env path) or env_content (inline .env text) — no workspace auto-detect. Application resources only (not one-click services).
  • deploy_and_watch — trigger deploy and bounded deployment.watch after wire (greenfield, or link-existing with application_uuid)
  • push — on greenfield only; default false omits gh --push. Set push: true to 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 .env file
  • env_content — inline .env text (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.

  1. Capability check — system({ action: "version" }) → inspect capabilities.diagnose_logs and capabilities.application_logs_follow
  2. One-shot triage + tail — diagnose.logs via diagnose({ action: "logs", mode: "full", uuid: "<uuid>" })
  3. Live symptom — application({ action: "logs", uuid: "<uuid>", follow: true }) when application_logs_follow is supported
  4. Build/deploy logs — deployment({ action: "logs", deployment_uuid: "<uuid>" }) on deploy suspicion

Deeper runbooks: coolify-incident · coolify-deploy · coolify-diagnose

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.