
Github Actions Templates
Scaffold production-style GitHub Actions workflows for test, build, Docker publish, and deploy steps on push and PR.
Overview
GitHub-actions-templates is an agent skill most often used in Ship (also Build devops and Operate infra) that produces production-ready GitHub Actions workflows for automated testing, building, and deployment.
Install
npx skills add https://github.com/wshobson/agents --skill github-actions-templatesWhat is this skill?
- Test workflow pattern with matrix node versions, npm ci, lint, test, and Codecov upload
- Triggers on push to main/develop and pull_request to main
- Patterns for Docker build/push, Kubernetes deploy, security scans, and matrix environments
- Uses current action pins (checkout@v4, setup-node@v4, codecov@v4)
- Aimed at reusable, secure workflow structure—not one-off shell scripts
- Documented test matrix example uses Node 18.x and 20.x
- Pattern 1 covers checkout, setup-node, npm ci, lint, test, and codecov upload steps
Adoption & trust: 11k installs on skills.sh; 36.5k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You are shipping from GitHub but only have manual npm test runs and no dependable workflow on every pull request.
Who is it for?
Indie devs on GitHub who need test-and-build automation quickly across Node and container-oriented stacks.
Skip if: Teams standardized on GitLab CI, CircleCI only, or who need enterprise policy gates beyond template starters.
When should I use this skill?
Setting up CI/CD with GitHub Actions, automating development workflows, or creating reusable workflow templates.
What do I get? / Deliverables
You get workflow YAML you can commit under .github/workflows with triggers, jobs, and action versions aligned to common production patterns.
- Workflow YAML files for test, build, or deploy
- Documented trigger and job patterns for matrix and security scans
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
CI/CD templates land when you are ready to ship safely with automated checks on every PR and main-branch push. Testing subphase is the canonical shelf because the documented patterns center on test jobs, matrix builds, lint, and coverage upload.
Where it fits
Add a test workflow when the API repo first gets npm scripts but no .github/workflows yet.
Gate merges with lint, unit tests, and coverage upload on every PR to main.
Extend the template with Docker push and deploy jobs after the app is already shipping.
How it compares
Curated workflow patterns for GitHub Actions—not a hosted CI product or MCP server.
Common Questions / FAQ
Who is github-actions-templates for?
Solo and small teams using GitHub who want agent-generated CI/CD YAML for test, build, and deploy automation.
When should I use github-actions-templates?
At Ship when adding PR tests and coverage, during Build when wiring devops for a new repo, and at Operate when extending pipelines with deploy or security scan jobs.
Is github-actions-templates safe to install?
Generated workflows can run shell and registry steps—review the Security Audits panel on this page and audit secrets and permissions before enabling on private repos.
SKILL.md
READMESKILL.md - Github Actions Templates
# GitHub Actions Templates Production-ready GitHub Actions workflow patterns for testing, building, and deploying applications. ## Purpose Create efficient, secure GitHub Actions workflows for continuous integration and deployment across various tech stacks. ## When to Use - Automate testing and deployment - Build Docker images and push to registries - Deploy to Kubernetes clusters - Run security scans - Implement matrix builds for multiple environments ## Common Workflow Patterns ### Pattern 1: Test Workflow ```yaml name: Test on: push: branches: [main, develop] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest strategy: matrix: node-version: [18.x, 20.x] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: "npm" - name: Install dependencies run: npm ci - name: Run linter run: npm run lint - name: Run tests run: npm test - name: Upload coverage uses: codecov/codecov-action@v4 with: files: ./coverage/lcov.info ``` **Reference:** See `assets/test-workflow.yml` ### Pattern 2: Build and Push Docker Image ```yaml name: Build and Push on: push: branches: [main] tags: ["v*"] env: REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} jobs: build: runs-on: ubuntu-latest permissions: contents: read packages: write steps: - uses: actions/checkout@v4 - name: Log in to Container Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata id: meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} - name: Build and push uses: docker/build-push-action@v5 with: context: . push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max ``` **Reference:** See `assets/deploy-workflow.yml` ### Pattern 3: Deploy to Kubernetes ```yaml name: Deploy to Kubernetes on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Configure AWS credentials 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-west-2 - name: Update kubeconfig run: | aws eks update-kubeconfig --name production-cluster --region us-west-2 - name: Deploy to Kubernetes run: | kubectl apply -f k8s/ kubectl rollout status deployment/my-app -n production kubectl get services -n production - name: Verify deployment run: | kubectl get pods -n production kubectl describe deployment my-app -n production ``` ### Pattern 4: Matrix Build ```yaml name: Matrix Build on: [push, pull_request] jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] python-version