ghcr-coolify-pipeline
Write the single GitHub Actions workflow that takes a repository from pull request to production through GHCR and Coolify.
Skill by KhaledSaeed18
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/khaledsaeed18-ghcr-coolify-pipeline
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops, data, writing, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 2
codeload.github.com· found in install commandsmoke.invalid· found in code
Files it touches
~/.claude/skills/ghcr-coolify-pipeline
What's inside
- Skill name
ghcr-coolify-pipeline- Description
- Write the single GitHub Actions workflow that takes a repository from pull request to production through GHCR and Coolify. Use when adding deployment to a repo, replacing a CI-only workflow, or debugging a deploy job.
- License
- MIT
- Instructions
- 55 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Files (4)
- SKILL.md
- pipeline-anatomy.md · reference/
- pipeline.express.yml · templates/
- pipeline.nextjs.yml · templates/
SKILL.md (first lines)
One workflow, five jobs: classify what changed, lint the ops layer, run the quality gates, build and smoke-test the runtime image, deploy through the Coolify API and prune the registry. Pull requests prove the image without publishing it; a push to `main` that changes something shipped publishes and deploys; "Run workflow" on `main` redeploys. Nothing in it needs a long-lived cloud key beyond one Coolify token. ## Hard rules: never break these - **A main run is never cancelled mid-flight and deploys never overlap.** `cancel-in-progress` only on pull requests; the deploy job holds its own concurrency group. - **Only `main` publishes and deploys.** Every push condition reads `github.ref == 'refs/heads/main' && github.event_name != 'pull_request'`. - **The image is proven before it is pushed.** The smoke test runs the image the way production will: own user, own probe, both locales or a real database, and a timed stop. - **Immutable tags.** `sha-<12>` is what deploys and rollbacks pin; `main` only tracks the newest build. - **`shell: bash` with pipefail on every job that pipes curl into jq.** Otherwise an empty body reaches jq silently. And never pipe curl into `grep -q`: it closes the pipe early and fails curl; write to a file first. - **Fail fast when configuration is missing.** The deploy job checks `COOLIFY_URL`, `COOLIFY_APP_UUID` and `COOLIFY_TOKEN` before touching anything. - **No secret is ever printed.** Tokens only appear as `Authorization` headers; the token value is pasted into GitHub by the owner. ## Step 1: Choose the template and read the repo | Stack | Template | Smoke test proves | | --- | --- | --- | | Next.js | [pipeline.nextjs.yml](./templates/pipeline.nextjs.yml) | healthy, non-root, both locales, auth redirect, headers, image optimizer, stop within 10 s | | Express and Prisma | [pipeline.express.yml](./templates/pipeline.express.yml) | migrations against a fresh Postgres, readiness probe, non-root, stop within 10 s, plus a schema and migration guard in the quality job | Read the existing workflow for the gates it already runs (lint, typecheck, tests, coverage, unused-code checks, build) and keep every one of them in the quality job. Check `package.json` for `packageManager` and `.nvmrc` for the Node version; the setup actions read both, so pin them if missing. Decide which Playwright or end-to-end suites stay local: anything that provisions its own database and sibling services usually does, because a free plan shares a small minutes budget across repositories. ## Step 2: Adapt the change classifier The `changes` job decides `code` (anything the gates can judge) and `runtime` (anything that ends up in the image). Edit the two regexes to the repo's layout: source folders, config files, lockfiles, Dockerfile, entrypoint, probe and shutdown scripts count as runtime; tests and docs do not. A docs-only push then stops after one job. The anatomy of every job and the reason for each line is in [reference/pipeline-anatomy.md](./reference/pipeline-anatomy.md). ## Step 3: Fill the variables and secrets | Name | Kind | Set by | Value | | --- | --- | --- | --- | | `SITE_URL` | variable | you, `gh variable set` | the URL the deploy job probes; the rehearsal domain first, the real one after cutover | | `API_ORIGIN` or `API_BASE_URL` | variable | you | the build-time backend origin baked into the image | | `COOLIFY_URL` | variable | you | the Coolify instance | | `COOLIFY_APP_UUID` | variable | you | from the application's URL | | `COOLIFY_TOKEN` | secret | owner | API token with deploy, read, write | | `VPS_SSH_KEY`, `VPS_HOST_KEY`, `VPS_HOST` | secrets | owner | only for the Express template's pre-deploy backup over SSH | `GITHUB_TOKEN` with `packages: write` pushes to GHCR; nothing else is needed for the registry. ## Step 4: Lint and run it ```bash docker run --rm -v "$PWD:/repo" -w /repo rhysd/actionlint:1.7.7 # includes shellcheck of every run block ``` Open a pull request; the run must be green with the deploy job skipped. After the merge, watch the main run to completion and read the `conclusion` field of each job rather than the overall badge: ```bash gh run watch <id> --exit-status; gh run view <id> --json conclusion,jobs --jq '.jobs[] | "\(.name): \(.conclusion)"' ``` The first main run's live probe fails if the domain has no DNS yet; that is expected and clears with the `live-domain-cutover` skill. The `fix-ci` skill covers a failing step; the `github-actions-pipeline` skill the general workflow rules. Report the workflow path, the gates kept, the variables set, the secrets the owner must add, and the first run's per-job result.
From KhaledSaeed18/dotclaude, MIT.
More from KhaledSaeed18/dotclaude
- 0.619score
vps-ops-toolkit
KhaledSaeed18
Install host operations on a VPS, with a cron health check that alerts on change, restore-verified encrypted database backups, and an installer.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
coolify-image-app
KhaledSaeed18
Create and configure a Coolify application that runs a prebuilt image from a registry.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
coolify-vps-baseline
KhaledSaeed18
Prepare a Linux VPS to run production containers under Coolify.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
deploy-verification
KhaledSaeed18
Prove a deployment from the server side.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
express-prisma-coolify-image
KhaledSaeed18
Package an Express and Prisma API as a runtime-only image that migrates its Postgres database at start.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
live-domain-cutover
KhaledSaeed18
Move a live domain from one host to another without downtime or lost sessions, with a rehearsal, a timed DNS switch, a soak and the old host removed.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
nextjs-coolify-image
KhaledSaeed18
Package a Next.js app as a runtime-only container image with a health probe and a fast shutdown.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
proxy-client-address
KhaledSaeed18
Forward the real client address from a server-side proxy to a backend without trusting forgeable headers.
SkillAFreshness: A★ 5Claude Code +9 - 0.579score
adr-writing
KhaledSaeed18
Write Architecture Decision Records that a future engineer can act on: a numbered, immutable record with the context that forced the decision, the options…
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
api-design-review
KhaledSaeed18
Review an API contract (REST or GraphQL) before or while it is implemented, checking resource naming, HTTP semantics, status codes, error shape, pagination…
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
code-review-response
KhaledSaeed18
Process code-review feedback with technical rigour.
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
openapi-spec
KhaledSaeed18
Write, generate, or review an OpenAPI 3.1 specification for an HTTP API so that it is accurate to the implementation, complete for consumers (schemas…
SkillBFreshness: B★ 5Claude Code +9
Signals
- Stars
- 5
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 5, 2026 (23 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/KhaledSaeed18/dotclaude
- Website
- dotclaude.khaledsaeed.tech/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from KhaledSaeed18
- 0.619score
live-domain-cutover
KhaledSaeed18
Move a live domain from one host to another without downtime or lost sessions, with a rehearsal, a timed DNS switch, a soak and the old host removed.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
coolify-image-app
KhaledSaeed18
Create and configure a Coolify application that runs a prebuilt image from a registry.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
coolify-vps-baseline
KhaledSaeed18
Prepare a Linux VPS to run production containers under Coolify.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
deploy-verification
KhaledSaeed18
Prove a deployment from the server side.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
express-prisma-coolify-image
KhaledSaeed18
Package an Express and Prisma API as a runtime-only image that migrates its Postgres database at start.
SkillAFreshness: A★ 5Claude Code +9 - 0.619score
nextjs-coolify-image
KhaledSaeed18
Package a Next.js app as a runtime-only container image with a health probe and a fast shutdown.
SkillAFreshness: A★ 5Claude Code +9
Cite this page
ghcr-coolify-pipeline skill. Agent Mart. https://agentmart.dev/skills/khaledsaeed18-ghcr-coolify-pipeline (last updated 2026-10-24)