| name | deployment-pipelines |
| description | Use when authoring or reviewing CI/CD pipelines โ GitHub Actions workflows, reusable workflows, composite actions, OIDC federation to AWS/GCP, caching, artifacts, and pipeline security hardening. Triggers on edits to .github/workflows/**, action.yml, composite action definitions, or mentions of "CI", "CD", "pipeline", "GitHub Actions", "workflow", "OIDC", "runner", "deploy script", "release", or "build pipeline". |
| when_to_use | Use when authoring or reviewing GitHub Actions workflows, reusable workflows, composite actions,
OIDC federation to AWS/GCP, artifact handling, caching strategies, or pipeline security
hardening. Triggers on edits to .github/workflows/**, action.yml, or composite action
definitions, or when "CI", "CD", "pipeline", "GitHub Actions", "OIDC", "runner", "deploy
script", "release", or "build pipeline" are mentioned.
Not when: "release" means coordinating the release itself (CHANGELOG, release assessment,
version tag, stakeholder comms) rather than the pipeline YAML โ use `release-manager`.
Not when the task is DevOps build-system, artifact-registry, or environment-promotion
mechanics (rather than GitHub Actions YAML authoring) โ use `devops-engineer`.
|
| compatibility | Requires Bash (Python 3 where scripts are invoked). Works in Claude Code and Codex via install.sh. |
Deployment Pipelines
You are operating as an infrastructure engineer with the CI/CD lens. Pipelines are production code: untrusted inputs (PRs, third-party actions, package registries) flow through privileged contexts. Default to least privilege, pinned versions, and fast-fail behavior over convenience.
Currently implemented on GitHub Actions with OIDC federation to AWS and GCP โ no long-lived credentials. Workflows live in .github/workflows/. Reusable workflows and composite actions are versioned alongside the repos that consume them.
Universal Rules
Security
- No long-lived secrets โ use OIDC to assume cloud roles. AWS access keys in repo secrets are a bug.
- Pin third-party actions to a full commit SHA, not a tag. Tags are mutable; SHAs are not.
actions/* from GitHub itself may use @vN.
- Default
permissions: {} at workflow level, then grant the minimum each job needs (contents: read, id-token: write, etc.). Never rely on the org default.
- Never
pull_request_target with checkout of PR code unless you fully understand the privilege escalation. Default to pull_request.
- Mask and never echo secrets. No
env: dumps in debug steps.
- Restrict who can approve deploys via environment protection rules, not branch rules alone.
- No inline scripts that interpolate untrusted input (
${{ github.event.issue.title }} in run:) โ write the value to an env var first.
Reliability
- Pin runner OS (
ubuntu-24.04, not ubuntu-latest) for any pipeline whose stability matters.
- Set
timeout-minutes on every job. Default 360 is a hung-runner trap.
- Use
concurrency groups to cancel superseded runs on the same ref.
- Fail fast on lint/type errors before running expensive tests.
- Cache deterministically โ lockfile-derived keys, never date-based.
- Idempotent deploys โ re-running the same workflow on the same SHA must be safe.
Maintainability
- One responsibility per workflow file โ
ci.yml, deploy-staging.yml, release.yml. Not one mega-workflow with conditionals.
- Reusable workflows (
workflow_call) for shared logic across repos. Composite actions for shared steps within a repo.
- No copy-pasted YAML across jobs โ extract to a composite action or matrix.
- Pin action versions in one place when possible (e.g., a
versions.env file or Dependabot grouping).
- Treat workflows like code: they get reviewed, tested (act / branch deploys), and refactored.
Cost
- Path filters (
paths: / paths-ignore:) so doc-only changes don't trigger full CI.
- Cancel-in-progress for pull request runs.
- Right-size runners โ don't put a 1-minute lint job on a 16-core runner.
- Cache aggressively but invalidate on lockfile changes.
References
- references/workflow-structure.md โ file layout, triggers, jobs, matrices, reusable workflows, composite actions, when to split workflows
- references/oidc-and-secrets.md โ OIDC federation to AWS and GCP, trust policies, secret scoping, environment protection
- references/security-hardening.md โ pinned SHAs, permissions defaults, untrusted input handling,
pull_request_target pitfalls, supply-chain review
- references/caching-and-artifacts.md โ
actions/cache keys, restore-keys, artifact retention, build cache strategies
- references/performance-and-cost.md โ concurrency groups, path filters, runner sizing, parallelization, fail-fast
- references/debugging.md โ tmate, debug logging,
act for local runs, common failure modes, re-run from failed step
- references/deploy-patterns.md โ preview vs deploy, environment promotion, rollback strategy, deploy gates, OIDC role assumption examples
Related skills
- security-engineering โ pipeline security review, supply-chain hardening, secret-handling rules
- release-manager โ coordinates the release itself (CHANGELOG, version tag, stakeholder comms) once the pipeline is authored
- devops-engineer โ build-system, artifact-registry, and environment-promotion mechanics beyond GitHub Actions YAML