agentleFS
LazyIsEfficientLazyIsEfficient/agentic-os/.claude/skills/deployment-pipelines/SKILL.md

deployment-pipelines

Skill17 starsChanged 23 days agoMITView on GitHub

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".

  • Reads credentials

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Fail fast on lint/type errors: before running expensive tests.

    line 39
  2. Very specific:

    Pin action versions in one place: when possible (e.g., a versions.env file or Dependabot grouping).

    line 47

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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

  1. No long-lived secrets — use OIDC to assume cloud roles. AWS access keys in repo secrets are a bug.
  2. 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.
  3. Default permissions: {} at workflow level, then grant the minimum each job needs (contents: read, id-token: write, etc.). Never rely on the org default.
  4. Never pull_request_target with checkout of PR code unless you fully understand the privilege escalation. Default to pull_request.
  5. Mask and never echo secrets. No env: dumps in debug steps.
  6. Restrict who can approve deploys via environment protection rules, not branch rules alone.
  7. No inline scripts that interpolate untrusted input (${{ github.event.issue.title }} in run:) — write the value to an env var first.

Reliability

  1. Pin runner OS (ubuntu-24.04, not ubuntu-latest) for any pipeline whose stability matters.
  2. Set timeout-minutes on every job. Default 360 is a hung-runner trap.
  3. Use concurrency groups to cancel superseded runs on the same ref.
  4. Fail fast on lint/type errors before running expensive tests.
  5. Cache deterministically — lockfile-derived keys, never date-based.
  6. Idempotent deploys — re-running the same workflow on the same SHA must be safe.

Maintainability

  1. One responsibility per workflow file — ci.yml, deploy-staging.yml, release.yml. Not one mega-workflow with conditionals.
  2. Reusable workflows (workflow_call) for shared logic across repos. Composite actions for shared steps within a repo.
  3. No copy-pasted YAML across jobs — extract to a composite action or matrix.
  4. Pin action versions in one place when possible (e.g., a versions.env file or Dependabot grouping).
  5. Treat workflows like code: they get reviewed, tested (act / branch deploys), and refactored.

Cost

  1. Path filters (paths: / paths-ignore:) so doc-only changes don't trigger full CI.
  2. Cancel-in-progress for pull request runs.
  3. Right-size runners — don't put a 1-minute lint job on a 16-core runner.
  4. 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

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.