
GitHub Actions -- CI/CD Integration Expert
SkillSkill
Your GitHub Actions expert that builds workflows, automates testing, and manages deployment pipelines.
About
name: github-actions description: > Build custom workflows, reusable actions, OIDC auth, runner configs, and monorepo CI with GitHub Actions. USE WHEN: User needs CI/CD workflows, reusable actions, secret management, runner configuration, or monorepo build optimization with GitHub Actions. DON'T USE WHEN: User needs deployment platform configuration. Use Vercel skill for Vercel-specific deploys. Use Forge for general infrastructure provisioning. OUTPUTS: Workflow YAML files, composite actions, runner configs, caching strategies, matrix builds, OIDC federation setups, monorepo CI architectures. version: 1.1.0 author: SpookyJuice tags: [github-actions, ci-cd, workflows, automation, runners] price: 14 author_url: "https://www.shopclawmart.com" support: "brian@gorzelic.net" license: proprietary osps_version: "0.1" content_hash: "sha256:3325bc82039f7882c592280f615f42f322dfc28b075795d588b451dc4751a056"
# GitHub Actions
Version: 1.1.0 Price: $14 Type: Skill
Description
Production CI/CD with GitHub Actions — beyond the starter workflow templates. The YAML surface is vast and the error messages are useless, so debugging why your matrix job silently skipped, your reusable workflow can't access secrets, or your monorepo rebuilds everything on every commit takes hours of pipeline archaeology. This skill gives you the workflow architecture patterns, caching strategies, and security configurations that teams spend months discovering through trial and error.
Prerequisites
- GitHub repository (public or private)
- GitHub Actions enabled (default for all repos)
- For OIDC: cloud provider account (AWS/GCP/Azure) with identity federation configured
- For self-hosted runners: compute infrastructure (VM, container, or bare metal)
Setup
- Copy
SKILL.mdinto your OpenClaw skills directory - Ensure
.github/workflows/directory exists in your repository - For secrets: configure via GitHub Settings → Secrets and variables → Actions
- Reload OpenClaw
Commands
- "Create a CI workflow for [project type]"
- "Build a reusable workflow for [shared process]"
- "Set up OIDC auth for [cloud provider] deploys"
- "Configure self-hosted runners for [environment]"
- "Optimize CI for a monorepo with [packages]"
- "Add matrix testing for [OS/runtime/version]"
- "Debug this workflow failure: [error]"
Workflow
Custom Workflow Authoring
- Trigger configuration — choose triggers precisely:
push(branches, tags, paths),pull_request(types: opened, synchronize, reopened),schedule(cron syntax),workflow_dispatch(manual with inputs),repository_dispatch(API-triggered). Combine triggers but understand thatpull_requestfrom forks has restricted permissions. - Job DAG design — structure jobs as a directed acyclic graph with
needs:dependencies. Independent jobs run in parallel automatically. Useif:conditions for conditional execution:if: github.event_name == 'push'orif: needs.test.result == 'success'. Group related steps into jobs by responsibility: lint, test, build, deploy. - Matrix strategies —
strategy.matrixfans out across combinations: OS (ubuntu-latest,macos-latest,windows-latest), runtime versions (node: [18, 20, 22]), and custom dimensions. Useincludeto add specific combinations andexcludeto remove them. Setfail-fast: falseto continue other matrix legs when one fails. - Output passing — pass data between steps with
$GITHUB_OUTPUT:echo "version=1.2.3" >> $GITHUB_OUTPUT. Pass between jobs usingoutputs:on the job definition. For complex data, use artifacts (actions/upload-artifact/actions/download-artifact) not outputs. - Concurrency control — use
concurrencygroups to prevent parallel runs:concurrency: { group: deploy-${{ github.ref }}, cancel-in-progress: true }. This cancels superseded deployments. For non-cancelable workflows (releases), omitcancel-in-progress. - Timeout and retry — set
timeout-minutesper job and per step. Default is 360 minutes (6 hours) — far too long. Set aggressive timeouts: 5-10 min for tests, 15-20 min for builds. Usecontinue-on-error: truefor non-critical steps.
Reusable Workflows and Composite Actions
- Reusable workflows — extract shared CI logic into
.github/workflows/reusable-*.ymlwithworkflow_calltrigger. Define typed inputs (inputs:) and secrets (secrets:). Consumers call withuses: org/repo/.github/workflows/reusable-ci.yml@v1. Secrets must be explicitly passed — they are NOT inherited by default (usesecrets: inheritto pass all). - Composite actions — create
action.ymlin a directory or separate repo. Composite actions bundle multiplerunsteps andusessteps into a single invocation. Defineinputs,outputs, andruns.steps. Unlike reusable workflows, composite actions run in the calling job's context. - Versioning strategy — tag releases with semver:
v1.0.0, and maintain a major version tag:v1that points to the latestv1.x.x. Consumers pin to@v1for automatic minor/patch updates,@v1.2.3for exact version, or@mainfor latest (not recommended for production). - Input validation — validate inputs early with conditional steps. Check required inputs aren't empty, enum inputs match allowed values, and version strings match expected patterns. Fail fast with clear error messages rather than letting invalid inputs cascade through the workflow.
- Testing actions — create a test workflow in the action's repo that exercises all inputs and edge cases. Use
act(local runner) for fast iteration. Test against multiple runner OS versions. Pin action dependencies to specific versions in tests. - Documentation — every reusable workflow and composite action gets: a description of what it does, input/output reference table, usage example, and version changelog. Put this in the action's README.md.
Monorepo CI Optimization
- Path filtering — use
paths:in trigger to run workflows only when relevant files change. For finer control, usedorny/paths-filteraction to detect which packages changed and set output flags for downstream jobs. - Dependency graph — map which packages depend on which. When
packages/corechanges, all consumers (apps/web,apps/api) must rebuild and test. Implement this as a job that outputs a build matrix based on changed packages and their dependents. - Caching strategy — layer your caches: package manager cache (
actions/cachewithpackage-lock.jsonhash key), build cache (compiled outputs with content hash), and Docker layer cache (docker/build-push-actionwithcache-from). Caches have a 10GB per-repo limit — prune aggressively. - Selective testing — run only the test suites affected by changes. Use
affectedtooling from Nx, Turborepo, or custom scripts. Fall back to full test suite onmainbranch pushes to catch integration issues. - Build artifact sharing — use
actions/upload-artifactandactions/download-artifactto share build outputs between jobs. For Docker images, push to a registry with a commit SHA tag for downstream jobs to pull. Don't rebuild the same code in multiple jobs. - CI minutes optimization — profile your workflows: identify slow steps, parallelize independent work, cache aggressively, and skip unnecessary runs. Use
actions/cache/restore(read-only) in PR workflows andactions/cache(read-write) inmainbranch workflows to maximize cache hits.
Output Format
⚙ GITHUB ACTIONS — [WORKFLOW TYPE]
Project: [Name]
Repository: [owner/repo]
Date: [YYYY-MM-DD]
═══ WORKFLOW CONFIG ═══
[YAML workflow content]
═══ JOB GRAPH ═══
| Job | Depends On | Runner | Timeout | Condition |
|-----|-----------|--------|---------|-----------|
| [job] | [deps] | [runner] | [min] | [if condition] |
═══ MATRIX ═══
| Dimension | Values | Total Combinations |
|-----------|--------|--------------------|
| [dim] | [values] | [N] |
═══ CACHING ═══
| Cache | Key Pattern | Size | Hit Rate |
|-------|-------------|------|----------|
| [cache] | [key] | [MB] | [%] |
═══ SECRETS ═══
| Secret | Scope | Used By | Rotation |
|--------|-------|---------|----------|
| [name] | [repo/org/env] | [jobs] | [schedule] |
Common Pitfalls
- Fork PR permissions —
pull_requestfrom forks runs with read-only permissions and no access to secrets. Usepull_request_targetcarefully (it runs in the base repo context with full permissions — security risk if you check out fork code). - Secret inheritance in reusable workflows — secrets are NOT passed to reusable workflows by default. You must explicitly pass each secret or use
secrets: inherit. Missing secrets fail silently with empty strings. - Cache key collisions — using only
package-lock.jsonhash as cache key means different branches share caches. Includegithub.refin keys when branch-specific caches matter. Caches frommainare available to PRs but not vice versa. - Matrix dimension explosion — 3 OS × 4 Node versions × 2 architectures = 24 jobs. Each takes a runner slot and billing minutes. Use
includefor specific tested combinations instead of full cartesian product. - Stale action versions — pinning to
@v1means you get updates automatically, which can break workflows. For critical CI, pin to exact SHA:uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29. Use Dependabot to update action versions.
Guardrails
- Never uses long-lived credentials. Cloud deploys use OIDC federation for keyless authentication. No AWS access keys or GCP service account JSON stored as secrets.
- Secrets are scoped minimally. Secrets use environment-level scoping (not repo-level) for production credentials. Review required before production environment secrets are accessible.
- Fork PRs are sandboxed. Fork pull requests never have write permissions or secret access. Workflows that need elevated permissions use
pull_request_targetwith explicit checkout controls. - Workflow changes are reviewed.
.github/workflows/modifications require PR review. No direct pushes to workflow files on protected branches. - CI minutes are tracked. Workflow duration and runner minutes are monitored. Alerts fire when approaching plan limits or when workflow duration regresses significantly.
- Actions are version-pinned. Third-party actions are pinned to commit SHA, not tags. Dependabot manages version updates with automated PR review.
- Workflow files scanned for secrets. All workflow YAML files are checked for hardcoded tokens, API keys, and credentials before commit. Secrets must use
${{ secrets.NAME }}references, never inline values. CI includes a secret-scanning step that blocks PRs with leaked credentials.
Support
Questions or issues with this skill? Contact brian@gorzelic.net Published by SpookyJuice — https://www.shopclawmart.com
Core Capabilities
- github-actions
- ci-cd
- workflows
- automation
- runners
Customer ratings
0 reviews
No ratings yet
- 5 star0
- 4 star0
- 3 star0
- 2 star0
- 1 star0
No reviews yet. Be the first buyer to share feedback.
Version History
This skill is actively maintained.
March 8, 2026
v2.1.0 — improved frontmatter descriptions for better OpenClaw display
March 1, 2026
v2.1.0 — improved frontmatter descriptions for better OpenClaw display
February 27, 2026
v1.1.0 — expanded from stub to full skill: workflow authoring, reusable actions, OIDC, runners, monorepo CI
One-time purchase
$14
By continuing, you agree to the Buyer Terms of Service.
Creator
SpookyJuice.ai
An AI platform that builds, monitors, and evolves itself
Multiple AI agents and one human collaborate around the clock — writing code, deploying infrastructure, and growing a shared knowledge graph. This page is a live dashboard of the running system. Everything you see is real data, updated in real time.
View creator profile →Details
- Type
- Skill
- Category
- Engineering
- Price
- $14
- Version
- 3
- License
- One-time purchase
Works With
Works with OpenClaw, Claude Projects, Custom GPTs, Cursor and other instruction-friendly AI tools.
Works great with
Personas that pair well with this skill.