Senior DevOps Toolkit
maslennikov-ig/claude-code-orchestrator-kit
Comprehensive DevOps skill for CI/CD, infrastructure automation, containerization, and cloud platforms (AWS, GCP, Azure). Includes pipeline setup…
A skill your agent uses when authoring or fixing GitHub Actions CI/CD — workflows under .github/workflows, triggers, job matrix, caching, token permissions, OIDC cloud deploys, environment gates…
$ npx skills add ericrisco/rsc-harness --skill github-actions -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness github-actions --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/github-actions .claude/skills/github-actions && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "github-actions" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/github-actions into .claude/skills/github-actions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "github-actions", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ericrisco/rsc-harness/tree/main/skills/github-actionsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ericrisco/rsc-harness --skill github-actions -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness github-actions --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/github-actions .agents/skills/github-actions && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "github-actions" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/github-actions into .agents/skills/github-actions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "github-actions", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill github-actions -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness github-actions --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/github-actions .cursor/skills/github-actions && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "github-actions" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/github-actions into .cursor/skills/github-actions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "github-actions", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ericrisco/rsc-harness.git --path skills/github-actions--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ericrisco/rsc-harness --skill github-actions -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness github-actions --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/github-actions .gemini/skills/github-actions && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "github-actions" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/github-actions into .gemini/skills/github-actions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "github-actions", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ericrisco/rsc-harness github-actionsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ericrisco/rsc-harness --skill github-actions -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/github-actions .github/skills/github-actions && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "github-actions" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/github-actions into .github/skills/github-actions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "github-actions", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill github-actions -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness github-actions --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/github-actions .opencode/skills/github-actions && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "github-actions" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/github-actions into .opencode/skills/github-actions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "github-actions", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
github-actionsA skill your agent uses when authoring or fixing GitHub Actions CI/CD — workflows under .github/workflows, triggers, job matrix, caching, token permissions, OIDC cloud deploys, environment gates…
GitHub Actions is an agent skill from ericrisco/rsc-harness. Use when authoring or fixing GitHub Actions CI/CD — workflows under .github/workflows, triggers, job matrix, caching, token permissions, OIDC cloud deploys, environment gates, reusable workflows. NOT the Dockerfile or image build strategy (that is docker), NOT the branching model (that is git-workflow), NOT release readiness (that is ship).
Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/caching-and-matrix.md`).
It sits in DevOps & Cloud, covering CI/CD, Containers and OAuth and OpenID Connect. It works with GitHub Actions and Docker. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 92fde8f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
dockerFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use docker, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
GitHub Actions loads about 3.3k tokens when it runs, and up to ~5.5k if it reads all its reference files. Until then it costs about 91 tokens; SKILL.md has 1,297 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from ericrisco/rsc-harness at commit 92fde8f, republished under its MIT licence (© ericrisco). 1,297 words, ~3,331 tokens.
.claude/skills/github-actions/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.A workflow is config that runs on an event. Before you write a single step, decide three things: which events fire the workflow, what permissions the token needs, and where credentials come from. Get those wrong and you have a fast pipeline that leaks secrets or a secure one nobody can trigger. Everything after that — checkout, install, test, build — is just steps.
This skill owns the workflow layer — the .github/workflows/*.yml files, their triggers, jobs, matrix, caching, secret/OIDC handling, environments and deploy gates. Route the rest out:
| Not this skill | Goes to | Because |
|---|---|---|
The Dockerfile, image build strategy | ../docker/SKILL.md | The workflow may call docker build; designing the image is not this skill. |
| Branching model, PR hygiene, merge vs rebase, commit conventions | ../git-workflow/SKILL.md | That is the source-control model, not the CI config layer. |
| Release readiness checklist, changelog, the shipping decision | ../ship/SKILL.md | Whether to release is a decision; this skill only automates the mechanics. |
| Blue/green, canary, rollback theory | ../deployment/SKILL.md | Actions triggers the deploy; the strategy is deployment's. |
| Choosing the host and its deploy primitives | ../vercel/SKILL.md, ../aws-essentials/SKILL.md | Actions triggers the deploy; the host owns the target. |
| Triaging SAST/CVE findings, threat modeling | ../secure-coding/SKILL.md | This skill runs a scanner as a job; it does not interpret the report. |
Pick the event(s) for each job class before writing YAML — the trigger decides what context and secrets the run gets.
| Event | Use it for | Why |
|---|---|---|
pull_request | lint, test, build-check | Runs on the merge ref; from forks it gets no secrets (safe). |
push (to main) | deploy, publish artifacts, build the release | The trusted ref with full secrets/OIDC. |
workflow_dispatch | manual ops, one-off backfills, manual deploys | Human-triggered with inputs; auditable. |
schedule (cron) | nightly builds, dependency audits, cache warmers | Cron in UTC; no human in the loop. |
release / push tags | publish to a registry, cut a GitHub Release | Fires on the tag, not every commit. |
workflow_call | reusable workflow invoked by others | Library of jobs; never runs on its own. |
pull_request_target | label/comment bots that need write on forks | Runs trusted with secrets — never check out PR head here. |
Do not run the same heavy job on both push and pull_request for the same commit — you pay runner minutes twice. Use pull_request for the checks and a separate push: branches: [main] job for deploy.
The minimal good CI: scoped trigger, read-only token, concurrency that cancels stale PR runs, built-in cache.
name: CI
on:
push:
branches: [main]
pull_request:
permissions:
contents: read # least privilege; widen per-job only when needed
concurrency:
group: ci-${{ github.ref }} # one run per branch/PR
cancel-in-progress: true # newer push kills the stale run (PR feedback)
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6 # first-party, current major
- uses: actions/setup-node@v6
with:
node-version: 22
cache: npm # built-in lockfile-keyed cache
- run: npm ci # not install — fails on a stale lockfile, reproducible
- run: npm run lint
- run: npm testWhy those three lines are not optional:
permissions: contents: read at the top — default token permissions may be write, and a leaked write token can push tags or publish packages. Widen per job and only to what that job needs (packages: write to publish, id-token: write for OIDC), never at the top.concurrency + cancel-in-progress: true — without it every push to an open PR leaves the old run finishing and billing. One group per ref keeps at most one running + one pending.actions/checkout@v6, setup-node@v6 are the current majors (checkout v6.0.2, setup-node v6.4.0). Old majors run on Node 20, removed from runners in September 2026; JS actions are forced onto Node 24 by default since June 2026.Two mechanisms, in order of preference:
cache: on setup-* — setup-node, setup-python, setup-go, etc. cache the package manager's store keyed on the lockfile. Free, one line. Use it.actions/cache@v4 — for anything else (build output, custom tool dirs, compiled artifacts).The cache key is the whole game. A cache is immutable once written for a key — if your key never changes, you cache stale deps forever.
# Bad — fixed key never invalidates; you restore yesterday's broken node_modules forever
- uses: actions/cache@v4
with:
path: ~/.npm
key: npm-cache
# Good — key changes when the lockfile changes; restore-keys gives a warm partial hit
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-restore-keys is a prefix fallback: an exact-key miss still restores the most recent cache whose key starts with the prefix, so a one-package change does not cold-start. Monorepo keys, Docker layer caching (type=gha), and runner-minute cost tradeoffs live in references/caching-and-matrix.md.
Run one job definition across combinations — OS x version is the common case.
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false # see all combos' results, not just the first failure
max-parallel: 4
matrix:
os: [ubuntu-latest, macos-latest]
node: [20, 22, 24]
exclude:
- os: macos-latest # don't pay the macOS multiplier on every version
node: 20
include:
- os: ubuntu-latest # one extra cell: lint only on the canonical combo
node: 24
lint: true
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with: { node-version: "${{ matrix.node }}", cache: npm }
- run: npm ci && npm testSet fail-fast: false when you want every combination's verdict (a compatibility matrix); leave it true (default) when one failure should abort the rest to save minutes. macOS and Windows runners bill at a multiple of Linux minutes — exclude the cells you do not need.
The rule: no long-lived cloud keys in repo secrets. Use OIDC. GitHub mints a short-lived JWT per run; AWS/Azure/GCP exchange it for a token scoped to that job, valid for minutes. Nothing static to steal — by 2026, static CI credentials are a compliance violation in regulated orgs.
# Bad — static AWS keys live in the repo forever; one leak = standing access
- 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 }}
# Good — OIDC: no stored keys, the role is assumed for this run only
permissions:
id-token: write # required for GitHub to mint the OIDC JWT
contents: read
steps:
- uses: aws-actions/configure-aws-credentials@<full-40-char-sha>
with:
role-to-assume: arn:aws:iam::123456789012:role/gh-deploy
aws-region: eu-west-1Hard rules:
echo a secret or pass it to an untrusted step. Secrets are masked in logs, but a third-party action or a crafted printf can exfiltrate them.repo:ORG/* — that lets any repo in the org assume your prod role. Scope sub to repo:ORG/REPO:ref:refs/heads/main or environment:production.environment + required reviewers so a human approves before the deploy job runs.Per-cloud trust setup (AWS role, GCP Workload Identity Federation, Azure federated credentials), the over-permissioned-trust footgun, and a full deploy-on-tag workflow with approval are in references/oidc-deploys.md.
SHA-pin third-party actions to a full 40-char commit SHA, not a tag. Tags are mutable: the tj-actions/changed-files compromise (2025) retargeted all tags to malicious code that dumped secrets. A SHA is the only immutable reference. GitHub now offers repo/org/enterprise policy to enforce full-SHA pinning across the whole tree.
# Bad — mutable tag; whoever controls the repo can repoint v1 at anything
- uses: some-org/some-action@v1
# Good — immutable, with a comment recording the human-readable version
- uses: some-org/some-action@a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0 # v1.4.2First-party actions/* and github/* may stay on a major tag (GitHub controls them), but pinning everything is the stronger posture.
pull_request_target + checking out the PR head = remote code execution with your secrets. That trigger runs in the base repo's trusted context. If you then checkout github.event.pull_request.head.sha, you execute a fork's code with full secret access. Never combine them.
Both kill copy-paste; pick by scope.
| You need to reuse... | Use | Note |
|---|---|---|
whole jobs with their own runs-on / services / matrix | reusable workflow (on: workflow_call) | secrets: inherit to forward; set concurrency inside it. |
| a set of steps that run inside one existing job | composite action | Lives at .github/actions/<name>/action.yml. |
# caller — reuse a whole job
jobs:
test:
uses: ./.github/workflows/reusable-test.yml
secrets: inheritGotcha: concurrency on the job that calls a reusable workflow does not behave as you expect — declare it inside the called workflow.
A deploy depends on the build, gets its own environment gate, and must never be cancelled mid-release.
deploy:
needs: build # only deploy a green build
runs-on: ubuntu-latest
environment: production # required-reviewer gate lives on the environment
concurrency:
group: deploy-production
cancel-in-progress: false # NEVER interrupt a release
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v6
- uses: aws-actions/configure-aws-credentials@<full-40-char-sha>
with:
role-to-assume: arn:aws:iam::123456789012:role/gh-deploy
aws-region: eu-west-1
- run: ./scripts/deploy.shcancel-in-progress: false here is the opposite of the CI default: cancelling a half-finished deploy can leave prod in a broken state.
| Anti-pattern | Why it bites | Do instead |
|---|---|---|
Third-party action pinned to a tag (@v1) | tj-actions 2025: tags got repointed to secret-stealing code | Pin to a full 40-char SHA, comment the version |
permissions: write-all or no permissions: block | Default token may be write; a leak can push/publish | Top-level contents: read, widen per job |
| Static cloud keys in repo secrets | Standing credentials; one leak = lasting access | OIDC id-token: write + role-to-assume |
OIDC trust scoped to repo:ORG/* | Any org repo can assume your prod role | Scope sub to repo + ref + environment |
No concurrency block | PR runs pile up and bill; deploys race | cancel-in-progress: true for CI, false for deploy |
| Cache key with no lockfile hash | Restores stale deps forever (immutable per key) | key: ...-${{ hashFiles('**/lock') }} + restore-keys |
pull_request_target + checkout PR head | Runs fork code with your secrets (RCE) | Use pull_request; never check out untrusted head with secrets |
Same heavy job on push and pull_request | Double-bills runner minutes per commit | pull_request for checks, push: [main] for deploy |
echo-ing a secret to debug | Crafted steps/actions exfiltrate the masked value | Never print secrets; use OIDC short-lived tokens |
After writing or editing workflows, run the static check on the repo:
skills/github-actions/scripts/verify.sh .It globs .github/workflows/*.{yml,yaml}, runs actionlint if present, and independently flags unpinned third-party actions, missing permissions:, an OIDC nudge for jobs using cloud secrets, and the pull_request_target + PR-head footgun. It exits non-zero only on a hard error, so it works as a CI gate.
© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (scripts, references) in skills/github-actions of ericrisco/rsc-harness.
Open the folder on GitHubat commit 92fde8f
GitHub Actions next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| GitHub Actions this skillericrisco/rsc-harness | 156 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Senior DevOps Toolkitmaslennikov-ig/claude-code-orchestrator-kit | 259 | 6 repos | ~1.1k | Automated safety check: Notes | Custom licence | |
| GitHub Actions CreatorFNOSP/FlyNarwhal | 495 | 1 repos | ~2.4k | Automated safety check: Pass | AGPL-3.0 | |
| Swig CI Reproswig/swig | 6.3k | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| DDNS Build and Release MaintenanceNewFuture/DDNS | 4.7k | — | ~444 | Automated safety check: Pass | MIT | |
| Data Processingaiskillstore/marketplace | 430 | 1 repos | ~720 | Automated safety check: Notes | MIT |
maslennikov-ig/claude-code-orchestrator-kit
Comprehensive DevOps skill for CI/CD, infrastructure automation, containerization, and cloud platforms (AWS, GCP, Azure). Includes pipeline setup…
FNOSP/FlyNarwhal
A skill your agent uses when the user wants to create, generate, or set up a GitHub Actions workflow.
swig/swig
Reproduce a GitHub Actions Linux CI failure locally when it does not happen on your machine: a podman/docker image that mirrors the ubuntu-22.04 runner by reusing the real Tools/CI-linux-.sh install…
NewFuture/DDNS
Maintains the DDNS project's GitHub Actions, Docker and Nuitka builds, packaging and release preparation without touching publishing credentials.
aiskillstore/marketplace
Process JSON with jq and YAML/TOML with yq. An agent skill from aiskillstore/marketplace.
Aedelon/claude-code-blueprint
Reference patterns for REST APIs, pytest/vitest testing, Docker multi-stage builds, GitHub Actions CI/CD, PostgreSQL, TypeScript generics, Python async, and React Server Components.
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Works with
Categories
A skill your agent uses when authoring or fixing GitHub Actions CI/CD — workflows under .github/workflows, triggers, job matrix, caching, token permissions, OIDC cloud deploys, environment gates…. GitHub Actions is an agent skill from ericrisco/rsc-harness.github/workflows, triggers, job matrix, caching, token permissions, OIDC cloud deploys, environment gates, reusable workflows.
GitHub Actions fits situations like: fixing GitHub Actions CI/CD — workflows under .github/workflows; token permissions; OIDC cloud deploys; environment gates.
Run `npx skills add ericrisco/rsc-harness --skill github-actions -a claude-code`. Or copy the skill folder (skills/github-actions in ericrisco/rsc-harness) into .claude/skills/github-actions in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill github-actions -a codex`. Or copy the skill folder (skills/github-actions in ericrisco/rsc-harness) into .agents/skills/github-actions in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill github-actions -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/github-actions, .gemini/skills/github-actions, .github/skills/github-actions and .opencode/skills/github-actions in your project.
Going by SKILL.md and its folder, GitHub Actions needs a shell for the scripts in its folder, the command-line tools its instructions call (docker) and credentials named AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. Our summary lists: A Bash shell; Docker; A credential in AWS_SECRET_ACCESS_KEY.
SKILL.md contains no URLs. Its commands use docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
GitHub Actions is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with GitHub Actions: Senior DevOps Toolkit (maslennikov-ig/claude-code-orchestrator-kit, 259 stars), GitHub Actions Creator (FNOSP/FlyNarwhal, 495 stars), Swig CI Repro (swig/swig, 6.3k stars) and DDNS Build and Release Maintenance (NewFuture/DDNS, 4.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 156 GitHub stars. The repository holds 229 skills in this directory. The repository was last updated on October 6, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.