agentsclimarketplace

Project ci cd

Skill Tanq16/claudex/skills/project-ci-cd

Use when setting up CI/CD for projects - covers Makefile, GitHub Actions, semantic versioning, Docker images, multi-platform binaries, Node runtime-bundled tarballs and self-contained binaries, and extension packagingFrom its SKILL.md

Install
npx -y skills add Tanq16/claudex --skill project-ci-cd

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

9.9 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it

Project CI/CD

Standardized CI/CD setup for projects with Makefile-driven builds and GitHub Actions.

When to Use

Use this skill when:

  • Setting up CI/CD for a Go project
  • Setting up CI/CD for a Node Web Only project
  • Setting up CI/CD for a Chrome extension
  • Adding release automation to an existing project
  • Configuring Docker builds and multi-platform binaries

Related skills:

  • go-foundations - Go project layout
  • node-foundations - Node Web Only project layout
  • chrome-extension-basics - Chrome extension structure

Start here — required reading

This skill branches by stack. Read the Always files for a Go/extension project before touching its CI/CD; for a Node Web Only project, read the Node files instead. A subagent may read any of these if you delegate that work.

Always (Go / Chrome extension):

  • ./references/makefile-template.md — the Makefile with asset management and build targets
  • ./references/release-workflow.md — the GitHub Actions release automation

When adding a Dockerfile (Go):

  • ./references/dockerfile-template.md — two-stage Docker build

When the project is Node Web Only (read these instead of the Go files):

  • ./references/node-makefile.md — Node Makefile: vendor assets, build native addon, verify, assemble
  • ./references/node-release.md — Node release: binary vs tarball, Bun/SEA, Debian-slim Docker, release matrix

CI/CD Files Checklist

Go CLI Only Projects

FilePurpose
MakefileBuild logic (build, build-all, clean, version — NO docker targets)
.github/workflows/release.yamlAutomated releases: binaries only, NO docker job

No Dockerfile, no docker-compose, no docker targets in Makefile.

Go Web Only Projects

CLI + Web hybrids use this same Web Only CI/CD (Docker + multi-platform binaries). A Headless API Service uses it too but drops the frontend-asset targets (make assets / make verify-assets).

FilePurpose
MakefileAll build logic (assets, build, docker, version)
DockerfileTwo-stage build for containerized deployment
.github/workflows/release.yamlAutomated releases: docker + binaries
docker-compose.yamlSimple compose for running the container (optional)

Node Web Only Projects

The only Node type for now — an HTTP + WebSocket server that also serves a vendored SPA frontend. Node CLI Only, CLI + Web, and Library are future/out-of-scope. The release artifact is a runtime-bundled tarball (native-addon apps, the default) or a single self-contained binary (pure-JS apps) — see ./references/node-release.md for the decision rule.

FilePurpose
MakefileVendor assets, build native addon from source, verify, assemble artifact (see node-makefile.md)
scripts/bundle.shAssemble the per-platform runtime-bundled tarball (tarball path)
DockerfileTwo-stage debian:*-slim (glibc) build — NOT Alpine (musl breaks glibc addons)
.github/workflows/release.yamlTag-triggered matrix release (Linux x64/arm64, macOS x64/arm64; no Windows)

Chrome Extensions

FilePurpose
MakefileBuild zip for distribution
.github/workflows/release.yamlAutomated releases on push to main

Do NOT create:

  • Separate build scripts (exception: a Node Web Only tarball release uses a single scripts/bundle.sh)
  • Multiple Dockerfiles
  • Additional workflow files beyond release

Secrets Required

Configure these secrets in GitHub repository settings:

SecretPurposeProject Type
DOCKER_ACCESS_TOKENPush images to Docker HubWeb Only / CLI + Web

The GITHUB_TOKEN is automatically available - no configuration needed. CLI Only projects need no additional secrets. A Node Web Only release that only ships tarballs/binaries needs no extra secrets either; add DOCKER_ACCESS_TOKEN only if it also pushes a Docker image.


Workflow

Step 1: Create Makefile

Go / Chrome extensions: Use ./references/makefile-template.md.

Node Web Only: Use ./references/node-makefile.md instead (vendors assets from node_modules, builds the native addon from source, verifies it, assembles the artifact) — the Go build/ldflags material does not apply.

CLI Only projects (Go): Use the CLI Only Template (no assets, no docker targets).

Web Only projects with frontend assets (Go): Use the Web Only Template with full assets, verify-assets, docker-build, and docker-push targets.

Web Only projects without frontend assets (Go): Use the Web Only Template but remove assets and verify-assets targets.

Customize these values (Go):

  • APP_NAME - your project name
  • Asset versions - update to latest as needed (Web Only / CLI + Web)
  • STATIC_DIR paths - match your project structure (Web Only / CLI + Web)
  • Version variable path in -ldflags - match your cmd package path

Step 2: Create Dockerfile (Web Only)

CLI Only projects skip this step entirely — they do not have a Dockerfile.

Node Web Only: Use the two-stage debian:*-slim (glibc) Dockerfile in ./references/node-release.md — not the Go Alpine template. Alpine's musl libc will not load the official glibc Node build or glibc-compiled native addons. The rest of this step (Go Alpine template) does not apply to Node.

Use ./references/dockerfile-template.md to create the Dockerfile (Go).

For Web Only projects with frontend assets:

  • Include make assets in the build stage

For Web Only projects without frontend assets:

  • Use the Minimal Template (no make assets step)

Customize:

  • Go version (currently 1.26)
  • Exposed port if different from 8080
  • Default CMD arguments for your app

Step 3: Create Release Workflow

Go / Chrome extensions: Use ./references/release-workflow.md to create .github/workflows/release.yaml.

Customize (Go):

  • Go version in the setup step
  • Docker Hub username (if different)

Node Web Only: Use the tag-triggered matrix workflow sketch in ./references/node-release.md. It compiles the native addon from source per platform (npm_config_build_from_source=true) on arch-native runners, runs scripts/bundle.sh, smoke-tests the tarball with a scrubbed PATH, and attaches per-platform tarballs to the release. For a pure-JS app, swap the bundle step for bun build --compile or node --build-sea and upload the binary.

Step 4: Create docker-compose.yaml (Web Only, Optional)

CLI Only projects skip this step — they do not use Docker.

For easy local deployment of Web Only projects:

services:
  [app-name]:
    image: [GITHUB_USER]/[app-name]:latest
    container_name: [app-name]
    ports:
      - "8080:8080"
    volumes:
      - ./data:/data
    restart: unless-stopped

Semantic Versioning

Version bumps are automatic based on commit message:

Commit Message ContainsVersion BumpExample
(nothing special)Patchv1.0.0 → v1.0.1
[minor-release]Minorv1.0.1 → v1.1.0
[major-release]Majorv1.1.0 → v2.0.0

Usage:

git commit -m "Add new feature [minor-release]"
git commit -m "Breaking API change [major-release]"
git commit -m "Fix bug in handler"  # patch release

Build Targets Reference

TargetDescriptionProject Type
make helpShow all available targetsAll
make assetsDownload frontend assetsWeb Only / CLI + Web
make verify-assetsVerify required assets existWeb Only / CLI + Web
make cleanRemove built binaries and assetsAll
make buildBuild for current platformAll
make build-for GOOS=linux GOARCH=amd64Build for specific platformAll
make build-allBuild all platform binariesAll
make docker-buildBuild Docker imageWeb Only / CLI + Web
make docker-pushBuild and push Docker imageWeb Only / CLI + Web
make setupInstall deps, vendor assets, verify addonNode Web Only
make vendorVendor JS libs + woff2 fonts into public/Node Web Only
make verifyProve the native addon loads and runsNode Web Only
make bundleAssemble runtime-bundled tarballNode Web Only
make binaryCompile single self-contained binary (pure-JS)Node Web Only
make versionCalculate next version from commitsAll

References

This skill uses the following reference files:

FileTypePurpose
./references/makefile-template.mdTemplateComplete Makefile with asset management and build targets (Go + Extensions)
./references/dockerfile-template.mdTemplateTwo-stage Docker build with instructions (Go)
./references/release-workflow.mdWorkflowGitHub Actions release automation (Go)
./references/node-makefile.mdTemplateNode Web Only Makefile: vendor assets, build native addon, verify, assemble artifact
./references/node-release.mdWorkflowNode Web Only release: binary vs tarball decision, Bun/SEA, Debian-slim Docker, release matrix

Using References

  • makefile-template: Copy and customize for your project. Remove assets section for CLI-only projects.
  • dockerfile-template: Copy and adjust Go version, ports, and CMD as needed.
  • release-workflow: Copy directly, update Go version if needed.
  • node-makefile: For Node Web Only. Copy, swap [APP_NAME], drop the native-addon/verify targets if pure-JS.
  • node-release: For Node Web Only. Pick the binary or tarball path, then copy the matching Docker + workflow.

What ships with it: 5 files

44.8 KB alongside SKILL.md

Keep looking

Skills are one crate of 626,045. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.