academic-writing
Write or revise thesis and paper prose section by section (abstract, introduction, related work, method, results, discussion,…
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.
Claude Code
$ npx -y skills add KhaledSaeed18/dotclaude --skill ghcr-coolify-pipeline --agent claude-code
Codex
$ npx skills add KhaledSaeed18/dotclaude --skill ghcr-coolify-pipeline -a codex -y
Cursor
$ npx skills add KhaledSaeed18/dotclaude --skill ghcr-coolify-pipeline -a cursor -y
Gemini CLI
$ npx skills add KhaledSaeed18/dotclaude --skill ghcr-coolify-pipeline -a gemini-cli -y
GitHub Copilot
$ npx skills add KhaledSaeed18/dotclaude --skill ghcr-coolify-pipeline -a github-copilot -y
OpenCode
$ npx skills add KhaledSaeed18/dotclaude --skill ghcr-coolify-pipeline -a opencode -y
Windsurf
$ npx skills add KhaledSaeed18/dotclaude --skill ghcr-coolify-pipeline -a windsurf -y
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. argument-hint: "(optional) the stack (next or express), the production URL, and the existing workflow file"
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.
| 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.
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).
| 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.
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:
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.
Reusable Claude Code extension registry. skills, subagents, slash commands, and hooks for engineering, git, testing, and security workflows. Distributed as a shadcn GitHub registry and as installable plugins.
Write or revise thesis and paper prose section by section (abstract, introduction, related work, method, results, discussion,…
Report computational benchmarks and experimental comparisons the way examiners and reviewers expect: fair baselines run under the…
Maintain the thesis .bib file as a single source of truth: fetch verified BibTeX from a DOI, arXiv id, or title via CrossRef and…
Expand a set of key papers into the literature around them by walking the citation graph with the Semantic Scholar and OpenAlex…
Audit every citation in a chapter, paper, or proposal against the .bib file and the real world: each cite key must exist, each…
Structure a thesis whose contribution is a built artifact (tool, system, method, model) using design science research: explicit…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.