github-actions

GitHub Actions workflow authoring for CI/CD pipelines. Covers workflow syntax, triggers, jobs, steps, matrix strategies, caching, artifacts, reusable workflows, composite actions, secrets management, OIDC authentication, and permissions hardening. Use when creating workflows, configuring jobs, setting up caching, or automating releases. Use for github-actions, workflow, ci, cd, actions, jobs, steps, matrix, cache, artifact, secrets, reusable-workflow.

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 "github-actions" with this command: npx skills add oakoss/agent-skills/oakoss-agent-skills-github-actions

GitHub Actions

Overview

GitHub Actions is a CI/CD platform that automates build, test, and deployment pipelines directly from GitHub repositories. Workflows are YAML files in .github/workflows/ triggered by events like pushes, pull requests, schedules, or manual dispatch. Each workflow contains one or more jobs that run on GitHub-hosted or self-hosted runners.

When to use: Automated testing, continuous deployment, release automation, scheduled tasks, multi-platform builds, dependency updates, container publishing, code quality checks, security scanning.

When NOT to use: Long-running services (use a proper hosting platform), heavy compute tasks exceeding runner limits (6-hour job timeout), tasks requiring persistent state between runs (use external storage), real-time event processing (use webhooks with a server).

Quick Reference

PatternSyntax / ActionKey Points
Push triggeron: push: branches: [main]Filter by branch, path, or tag
PR triggeron: pull_request: types: [opened, synchronize]Defaults to opened, synchronize, reopened
Scheduled triggeron: schedule: - cron: '0 6 * * 1'UTC only, minimum 5-minute interval
Manual triggeron: workflow_dispatch: inputs:Define typed inputs for manual runs
Job dependenciesneeds: [build, test]Run jobs in sequence or parallel
Conditional jobif: github.ref == 'refs/heads/main'Expression-based job/step filtering
Matrix strategystrategy: matrix: node: [18, 20, 22]Generates jobs for each combination
Dependency cacheactions/cache@v5Hash-based keys with restore-keys fallback
Setup with cacheactions/setup-node@v6 with cache: 'pnpm'Built-in caching for package managers
Upload artifactactions/upload-artifact@v4Share data between jobs or preserve outputs
Download artifactactions/download-artifact@v4Retrieve artifacts from earlier jobs
Reusable workflowuses: ./.github/workflows/reusable.ymlCalled with workflow_call trigger
Composite actionaction.yml with using: compositeBundle multiple steps into one action
Concurrencyconcurrency: group: ${{ github.ref }}Cancel or queue duplicate runs
Environment secrets${{ secrets.API_KEY }}Scoped to repo, org, or environment
OIDC authenticationpermissions: id-token: writeShort-lived tokens for cloud providers
Step outputsecho "key=value" >> "$GITHUB_OUTPUT"Pass data between steps and jobs
Service containersservices: postgres: image: postgres:16Sidecar containers for integration tests
Timeouttimeout-minutes: 30Fail fast on hung jobs or steps
Attestationsactions/attest-build-provenance@v3SLSA build provenance for supply chain

Expressions and Contexts

ContextExampleDescription
githubgithub.ref_name, github.shaEvent metadata, repo info, actor
envenv.NODE_ENVEnvironment variables at current scope
secretssecrets.API_KEYEncrypted secrets (masked in logs)
inputsinputs.environmentWorkflow dispatch or reusable inputs
matrixmatrix.nodeCurrent matrix combination values
stepssteps.build.outputs.versionOutputs from previous steps
needsneeds.prepare.outputs.tagOutputs from dependent jobs
runnerrunner.os, runner.archRunner environment info
varsvars.DEPLOY_URLRepository or org configuration variables

Common Mistakes

MistakeCorrect Pattern
Using outdated action major versionsPin to current major version (@v6) or commit SHA
Missing persist-credentials: falseSet on checkout when using custom tokens or OIDC
Broad permissions at workflow levelSet permissions: {} at workflow level, grant per-job
Cache key without dependency file hashInclude hashFiles('**/pnpm-lock.yaml') in cache key
Secrets in if: conditionsSecrets cannot be used in if: expressions directly
Using pull_request_target carelesslyNever run PR code with write permissions from pull_request_target
Not cancelling stale runsUse concurrency with cancel-in-progress: true
Storing structured data as a single secretCreate individual secrets per value for proper log redaction
Referencing action tags without SHA pinningPin third-party actions to full commit SHA for supply chain safety
Hardcoding runner OS in scriptsUse runner.os context for cross-platform compatibility
Using actions/cache without restore-keysAlways provide restore-keys for partial cache matches
Interpolating user input in run: blocksPass untrusted values through env: to prevent script injection
No timeout-minutes on jobsSet explicit timeouts to fail fast on hung processes
Using always() without scopingCombine with status checks: if: always() && steps.x.outcome == 'success'

Delegation

  • Workflow debugging: Use Explore agent to inspect workflow run logs
  • Security auditing: Use Task agent to review permissions and secret usage
  • Code review: Delegate to code-reviewer agent for workflow PR reviews

References

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.

Coding

github-actions

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

github-actions

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

github-cli

No summary provided by upstream source.

Repository SourceNeeds Review