Agent Skill
2/7/2026

run-cicd-pipeline-locally

Run the Wavecraft CI checks locally. Prefer the native `cargo xtask` commands for speed; use Docker + `act` only when validating GitHub Actions workflows or Linux-specific behavior.

R
ronhouben
1GitHub Stars
1Views
npx skills add RonHouben/wavecraft

SKILL.md

Namerun-cicd-pipeline-locally
DescriptionRun the Wavecraft CI checks locally. Prefer the native `cargo xtask` commands for speed; use Docker + `act` only when validating GitHub Actions workflows or Linux-specific behavior.

name: Run CI/CD Pipeline Locally description: Run the Wavecraft CI checks locally. Prefer the native cargo xtask commands for speed; use Docker + act only when validating GitHub Actions workflows or Linux-specific behavior.

Skill: Run GitHub Actions CI/CD pipeline Locally

Use this skill to test CI workflows locally before pushing to GitHub. Preferred path: run the native cargo xtask commands (fast, no Docker). Use Docker + act only when you need to validate workflow YAML or Linux-specific behavior.

Workflow parity requirement ✅

Keep an xtask mirror for every workflow file under .github/workflows/. If a workflow changes (or a new one is added), update or add an xtask so local runs stay fast and consistent. Use Docker + act only for workflow/YAML-specific checks or Linux-only behavior.

Workflow filePreferred local mirrorNotes
ci.ymlcargo xtask ci-checkFull lint + test suite
template-validation.ymlcargo xtask validate-templateCLI template generation validation
release.ymlcargo xtask releaseBuild/sign/notarize pipeline
cli-release.ymlcargo xtask releaseMirror release steps where applicable; add a dedicated xtask if workflow diverges
continuous-deploy.ymlcargo xtask releaseUse release pipeline for parity; add a publish-focused xtask if needed

Preferred: Native xtask (fast, no Docker)

These commands mirror CI checks without container overhead and are the recommended way to validate locally.

# Pre-push validation (lint + tests)
cargo xtask ci-check

# Template validation (mirrors template-validation.yml)
cargo xtask validate-template

# Optional targeted runs
cargo xtask lint
cargo xtask test

Prerequisites

  • Rust toolchain (stable, with clippy + rustfmt)
  • Node.js + npm (for UI checks)

Docker-based (only when needed)

Use Docker + act when validating GitHub Actions workflow changes, Linux-specific behavior, or job orchestration.

⚠️ Agent Handoff: If you don't have terminal execution tools available, delegate to an agent who does (Coder or Tester) to run the Docker/act commands below.

Prerequisites (Docker path)

  • Docker Desktop must be installed and running
  • act must be installed: brew install act
  • Wavecraft custom CI image (recommended): See the “Building the Custom Image” section below

Quick Start for Wavecraft (Docker)

Wavecraft provides a custom Docker image with all dependencies pre-installed:

# Build the custom image (one-time setup)
docker build --platform linux/amd64 -t wavecraft-ci:latest .github/skills/run-ci-pipeline-locally/

# Run a specific job
act -j check-engine -W .github/workflows/ci.yml \
    --container-architecture linux/amd64 \
    -P ubuntu-latest=wavecraft-ci:latest \
    --pull=false \
    --artifact-server-path ./tmp/act-artifacts

Available CI Jobs

JobDescriptionLocal Testing
check-uiPrettier, ESLint, TypeScript✅ Works
test-uiVitest unit tests✅ Works
prepare-engineBuild UI + compile Rust✅ Works
check-enginecargo fmt + clippy✅ Works
test-enginecargo test✅ Works

Run Full Pipeline Locally (Docker)

# Run entire CI workflow
act -W .github/workflows/ci.yml \
    --container-architecture linux/amd64 \
    -P ubuntu-latest=wavecraft-ci:latest \
    --pull=false \
    --artifact-server-path ./tmp/act-artifacts

Building the Custom Image

The custom image includes:

  • Ubuntu 22.04
  • Node.js 20.x
  • Rust stable with rustfmt + clippy
  • GTK, WebKit, X11 development libraries
# Build for linux/amd64 (required for Apple Silicon Macs)
docker build --platform linux/amd64 -t wavecraft-ci:latest \
    .github/skills/run-ci-pipeline-locally/

# Verify the image
docker images | grep wavecraft-ci

Note: Build takes ~5-10 minutes on first run.

Commands Reference (Docker)

Important: Do not combine act commands with head or tail — follow the logs directly.

List Available Jobs

act -l

Run Specific Workflow

act -W .github/workflows/ci.yml

Run Specific Job

act -j <job-name>

Run on Specific Event

act push
act pull_request

Dry Run (Preview Without Executing)

act -n

Pass Secrets

# Use GitHub CLI token
act -s GITHUB_TOKEN="$(gh auth token)"

# Use secrets file (.secrets with KEY=value format)
act --secret-file .secrets

Key Flags for Wavecraft

FlagPurpose
--container-architecture linux/amd64Required on Apple Silicon Macs
-P ubuntu-latest=wavecraft-ci:latestUse custom image with dependencies
--pull=falseUse local image, don't pull from Docker Hub
-W .github/workflows/ci.ymlSpecify workflow file
-j <job-name>Run specific job
--artifact-server-path <dir>Enable local artifact upload/download

Limitations (Docker)

Artifact Upload/Download

By default, actions/upload-artifact and actions/download-artifact fail locally because they require GitHub's artifact server. Use the --artifact-server-path flag to enable a local artifact server:

act ... --artifact-server-path /tmp/act-artifacts

Artifacts will be stored in the specified directory and can be downloaded by subsequent jobs.

Caching Differences

  • act doesn't share cache with GitHub Actions
  • First local run compiles everything from scratch
  • Subsequent runs with --reuse can be faster

Network Dependencies

Some steps require network access:

  • cargo downloads crates
  • npm downloads packages
  • Git repos are cloned

Debugging Failed Runs

# Verbose output
act -v

# Very verbose output
act -vv

# Keep containers running after failure for inspection
act --reuse

# Interactive shell in the container
docker exec -it <container-id> bash

Common Issues

IssueSolution
Docker not runningStart Docker Desktop
--container-architecture errorsEnsure Docker supports linux/amd64 emulation
Image pull timeoutUse --pull=false with local image
Permission denied on filesCheck Docker volume mounts
Job uses macos-latestSkip job or test manually
Missing Linux packagesRebuild custom image
Rust compilation slowExpected on first run; use --reuse for subsequent
ACTIONS_RUNTIME_TOKEN errorAdd --artifact-server-path /tmp/act-artifacts

Updating the Custom Image

If CI dependencies change (new apt packages, Rust version, etc.):

  1. Edit the Dockerfile at .github/skills/run-ci-pipeline-locally/Dockerfile
  2. Rebuild: docker build --platform linux/amd64 -t wavecraft-ci:latest .github/skills/run-ci-pipeline-locally/
  3. Test: act -j check-engine ... --pull=false
Skills Info
Original Name:run-cicd-pipeline-locallyAuthor:ronhouben