building-cicd-configs

When to use this skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "building-cicd-configs" with this command: npx skills add wesleysmits/agent-skills/wesleysmits-agent-skills-building-cicd-configs

CI/CD Config Builder

When to use this skill

  • User asks to set up CI/CD for a project

  • User wants to create GitHub Actions workflows

  • User mentions GitLab CI or CircleCI

  • User wants to automate linting, testing, or deployment

  • User asks to add a pipeline step or job

Workflow

  • Detect project type and framework

  • Identify target CI/CD platform

  • Determine required pipeline stages

  • Generate pipeline configuration

  • Validate config syntax locally

  • Present for user approval

Instructions

Step 1: Detect Project Type

Check for framework indicators:

Framework Indicators

Next.js next.config.* , "next" in package.json

Nuxt nuxt.config.* , "nuxt" in package.json

Vite vite.config.* , "vite" in package.json

Node.js package.json without frontend framework

Static index.html at root, no package.json

Python requirements.txt , pyproject.toml , setup.py

Detect package manager:

ls package-lock.json yarn.lock pnpm-lock.yaml bun.lockb 2>/dev/null | head -1

Check for existing scripts:

npm pkg get scripts 2>/dev/null

Step 2: Identify CI/CD Platform

Check for existing configs:

ls -la .github/workflows/ .gitlab-ci.yml .circleci/config.yml 2>/dev/null

Platform selection:

  • GitHub Actions: Default for GitHub repos, .github/workflows/*.yml

  • GitLab CI: For GitLab repos, .gitlab-ci.yml

  • CircleCI: If .circleci/ exists or user specifies

Step 3: Determine Pipeline Stages

Standard pipeline flow:

install → lint → test → build → deploy

Required stages based on project:

  • Has ESLint/Prettier → include lint

  • Has test framework → include test

  • Has build script → include build

  • Has deployment target → include deploy

Step 4: Generate Configuration

GitHub Actions (Node.js/Next.js):

name: CI

on: push: branches: [main] pull_request: branches: [main]

jobs: ci: runs-on: ubuntu-latest

steps:
  - uses: actions/checkout@v4

  - name: Setup Node.js
    uses: actions/setup-node@v4
    with:
      node-version: "20"
      cache: "npm"

  - name: Install dependencies
    run: npm ci

  - name: Lint
    run: npm run lint

  - name: Test
    run: npm test

  - name: Build
    run: npm run build

GitHub Actions (with matrix):

jobs: ci: runs-on: ubuntu-latest strategy: matrix: node-version: [18, 20, 22]

steps:
  - uses: actions/checkout@v4

  - name: Setup Node.js ${{ matrix.node-version }}
    uses: actions/setup-node@v4
    with:
      node-version: ${{ matrix.node-version }}
      cache: "npm"

  - run: npm ci
  - run: npm run lint
  - run: npm test

GitLab CI:

stages:

  • install
  • lint
  • test
  • build

variables: npm_config_cache: "$CI_PROJECT_DIR/.npm"

cache: paths: - .npm/ - node_modules/

install: stage: install image: node:20 script: - npm ci

lint: stage: lint image: node:20 script: - npm run lint

test: stage: test image: node:20 script: - npm test coverage: '/All files[^|]|[^|]\s+([\d.]+)/'

build: stage: build image: node:20 script: - npm run build artifacts: paths: - dist/

CircleCI:

version: 2.1

orbs: node: circleci/node@5

jobs: build-and-test: executor: name: node/default tag: "20" steps: - checkout - node/install-packages - run: name: Lint command: npm run lint - run: name: Test command: npm test - run: name: Build command: npm run build

workflows: ci: jobs: - build-and-test

Step 5: Add Deployment (Optional)

Vercel (GitHub Actions):

deploy: needs: ci runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - uses: amondnet/vercel-action@v25 with: vercel-token: ${{ secrets.VERCEL_TOKEN }} vercel-org-id: ${{ secrets.VERCEL_ORG_ID }} vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }} vercel-args: "--prod"

AWS S3 (GitHub Actions):

deploy: needs: ci runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - run: npm ci && npm run build - uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - run: aws s3 sync ./dist s3://${{ secrets.S3_BUCKET }} --delete

Step 6: Validate Configuration

GitHub Actions:

Install actionlint

brew install actionlint actionlint .github/workflows/*.yml

GitLab CI:

Use GitLab's CI Lint API or local validation

gitlab-ci-lint .gitlab-ci.yml

CircleCI:

circleci config validate .circleci/config.yml

YAML syntax check:

npx yaml-lint .github/workflows/*.yml

Common Additions

Environment variables:

env: NODE_ENV: production CI: true

Caching (GitHub Actions):

  • uses: actions/cache@v4 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}

Conditional jobs:

if: github.event_name == 'push' && github.ref == 'refs/heads/main'

Secrets reference:

${{ secrets.SECRET_NAME }}

Validation

Before completing:

  • Config syntax is valid

  • All referenced scripts exist in package.json

  • Secrets are documented (not values, just names needed)

  • Node version matches project requirements

  • Cache configuration is correct for package manager

Error Handling

  • Workflow not triggering: Check branch names and on: triggers match.

  • Action not found: Verify action version exists (e.g., @v4 not @v5 ).

  • Secrets missing: Document required secrets for user to add in repo settings.

  • Syntax error: Run actionlint or YAML linter locally.

  • Unsure about syntax: Check platform documentation or run --help on CLI tools.

Resources

  • GitHub Actions Documentation

  • GitLab CI Documentation

  • CircleCI Documentation

  • actionlint

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

writing-product-descriptions

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

writing-press-releases

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

generating-social-media-captions

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

creating-podcast-show-notes

No summary provided by upstream source.

Repository SourceNeeds Review