Project ci cd
Multi-account CLI companion for Claude Code that tracks usage limits, launches configured sessions, and applies skills & output styles.
npx -y skills add Tanq16/claudex --skill project-ci-cdAssembled 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.
- 3 stars3 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.
What its author says it does
Copied from the file, not written here
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 packaging
SKILL.md
9.9 KB, 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 layoutnode-foundations- Node Web Only project layoutchrome-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
| File | Purpose |
|---|---|
Makefile | Build logic (build, build-all, clean, version — NO docker targets) |
.github/workflows/release.yaml | Automated 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).
| File | Purpose |
|---|---|
Makefile | All build logic (assets, build, docker, version) |
Dockerfile | Two-stage build for containerized deployment |
.github/workflows/release.yaml | Automated releases: docker + binaries |
docker-compose.yaml | Simple 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.mdfor the decision rule.
| File | Purpose |
|---|---|
Makefile | Vendor assets, build native addon from source, verify, assemble artifact (see node-makefile.md) |
scripts/bundle.sh | Assemble the per-platform runtime-bundled tarball (tarball path) |
Dockerfile | Two-stage debian:*-slim (glibc) build — NOT Alpine (musl breaks glibc addons) |
.github/workflows/release.yaml | Tag-triggered matrix release (Linux x64/arm64, macOS x64/arm64; no Windows) |
Chrome Extensions
| File | Purpose |
|---|---|
Makefile | Build zip for distribution |
.github/workflows/release.yaml | Automated 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:
| Secret | Purpose | Project Type |
|---|---|---|
DOCKER_ACCESS_TOKEN | Push images to Docker Hub | Web 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_DIRpaths - 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 assetsin the build stage
For Web Only projects without frontend assets:
- Use the Minimal Template (no
make assetsstep)
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 Contains | Version Bump | Example |
|---|---|---|
| (nothing special) | Patch | v1.0.0 → v1.0.1 |
[minor-release] | Minor | v1.0.1 → v1.1.0 |
[major-release] | Major | v1.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
| Target | Description | Project Type |
|---|---|---|
make help | Show all available targets | All |
make assets | Download frontend assets | Web Only / CLI + Web |
make verify-assets | Verify required assets exist | Web Only / CLI + Web |
make clean | Remove built binaries and assets | All |
make build | Build for current platform | All |
make build-for GOOS=linux GOARCH=amd64 | Build for specific platform | All |
make build-all | Build all platform binaries | All |
make docker-build | Build Docker image | Web Only / CLI + Web |
make docker-push | Build and push Docker image | Web Only / CLI + Web |
make setup | Install deps, vendor assets, verify addon | Node Web Only |
make vendor | Vendor JS libs + woff2 fonts into public/ | Node Web Only |
make verify | Prove the native addon loads and runs | Node Web Only |
make bundle | Assemble runtime-bundled tarball | Node Web Only |
make binary | Compile single self-contained binary (pure-JS) | Node Web Only |
make version | Calculate next version from commits | All |
References
This skill uses the following reference files:
| File | Type | Purpose |
|---|---|---|
./references/makefile-template.md | Template | Complete Makefile with asset management and build targets (Go + Extensions) |
./references/dockerfile-template.md | Template | Two-stage Docker build with instructions (Go) |
./references/release-workflow.md | Workflow | GitHub Actions release automation (Go) |
./references/node-makefile.md | Template | Node Web Only Makefile: vendor assets, build native addon, verify, assemble artifact |
./references/node-release.md | Workflow | Node 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/verifytargets if pure-JS. - node-release: For Node Web Only. Pick the binary or tarball path, then copy the matching Docker + workflow.