Skip to main content
skill CX Codex

github-actions · tartinerlabs — Claude Code skill: CI workflows and audits

Writes and audits GitHub Actions workflows: pins actions to SHAs, tightens permissions, catches stale Node versions.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add tartinerlabs/skills --skill github-actions -a claude-code
Open on GitHub

What github-actions does

The skill runs in two modes. By default it reads every .yml and .yaml file under .github/workflows/ and reports findings as path:line, each with what is wrong and the fix, grouped by severity. Ask it to set up CI and it first works out the language from package.json, go.mod, pyproject.toml, Cargo.toml or Gemfile, then picks the package manager from the lockfile for JS/TS projects.

Every action gets resolved to a full commit SHA with gh api repos/{owner}/{repo}/commits/{ref} --jq '.sha' before it lands in a workflow, and the original ref stays behind as a comment. On pnpm projects the skill advises declaring the version in devEngines.packageManager and Node in devEngines.runtime, both pinned exactly rather than as a range. Keep one declaration, not both: version switchers reject a project whose fields disagree.

Nine rules in rules/ drive the checks — action pinning, permissions, migration drift, concurrency, Node version, caching, triggers, matrix strategy and parallel steps. You need gh on PATH; without it the SHA lookups fail. Fixes are applied only when you ask for them, never just because the workflows folder is missing.

What it helps with

  • pin every action to a commit SHA instead of a floating tag
  • get an audit report with file paths and line numbers
  • generate a CI workflow for Go, Python, Rust or Ruby
  • detect the package manager from the lockfile
  • add a job that flags migration drift

Example prompts for the agent

  • Audit every workflow in .github/workflows/ and list the problems
  • Set up CI for this project
  • Fix action pinning and permissions in our workflows

How to install github-actions

1Skills CLI (Vercel)

npx skills add tartinerlabs/skills --skill github-actions -a claude-code

2Manually: put the files in place

~/.claude/skills/github-actions/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/github-actions/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about github-actions

How do I install github-actions in Claude Code?

Run npx skills add tartinerlabs/skills --skill github-actions -a claude-code. The skill lands at ~/.claude/skills/github-actions/SKILL.md.

What does github-actions do?

It generates a CI workflow for the detected language and audits existing ones against nine rules covering pinning, permissions, concurrency, Node version, caching, triggers, matrix, parallel steps and migration drift.

What does the skill need to run?

The gh CLI, used to look up commit SHAs when pinning. Language and package manager are detected from files already in the repo.

Source text

SKILL.md · MIT
---
name: github-actions
description: Use when adding CI/CD, creating workflows, auditing GitHub Actions, or fixing action pinning. Creates and audits workflows for SHA pinning and permissions.
license: MIT
allowed-tools: Read Glob Grep Edit Write Bash(gh:*)
model: sonnet
effort: high
context: fork
agent: general-purpose
compatibility: Targets GitHub Actions (GitHub-native); uses gh for SHA lookups; auto-detects project language (Node/JS-TS, Go, Python, Rust, Ruby)
metadata:
  short-description: Create and audit CI workflows.
---

## Mode Detection

Audit and report by default. Generate workflows only when asked to create, add, or set up CI — and **never merely because `.github/workflows/` is absent**; report that none were found instead. Apply fixes only when asked to fix or pin. When the ask is unclear, report and offer to apply the fixes.

## Create Mode

### 1. Detect Project Type

Scan for project indicators:
- `package.json` → Node.js/JS/TS
- `go.mod` → Go
- `requirements.txt` / `pyproject.toml` / `setup.py` → Python
- `Cargo.toml` → Rust
- `Gemfile` → Ruby

### 2. Detect Package Manager (JS/TS projects)

Detect the package manager from the lockfile, in this order: `nub.lock`, `pnpm-lock.yaml`, `bun.lock`/`bun.lockb`, `yarn.lock`, `package-lock.json`. With no lockfile, ask.

A `devEngines.packageManager` or `packageManager` field in `package.json` outranks any lockfile. For pnpm, prefer `devEngines.packageManager` over `packageManager`: pnpm 11+ and the `pnpm/setup` action read it first, and pnpm records the resolved version in `pnpm-lock.yaml`. Pin an exact version rather than a range, so every machine and CI run uses the same pnpm — resolve the current latest at setup time (`pnpm view pnpm version`) and write it as `{ "name": "pnpm", "version": "<latest>", "onFail": "download" }`. The same goes for the runtime: declare Node in `devEngines.runtime` (pnpm 10.14+ downloads it and records its checksum in the lockfile) rather than `.nvmrc` or `engines.node`, pinned to the current LTS resolved at setup time — `pnpm runtime set node lts` (pnpm 11.4+) writes the field; confirm the saved `version` is exact, not a range. Write that field when declaring pnpm; migrating a legacy `"packageManager": "pnpm@…"` is worthwhile but optional. Keep one declaration, not both — version switchers refuse a project whose two fields disagree. Yarn still needs `packageManager`, the only field it reads. Nub runs in compat-mode over another manager's lockfile, so `nub.lock` alongside `pnpm-lock.yaml` means nub — check the field before concluding from lockfiles alone.

### 3. Generate Workflow

Read each rule file in `rules/` and apply all of them when generating workflows.

Pin every action per `rules/action-pinning.md` before writing the workflow, including GitHub-owned `actions/*`. Resolve the intended release or source ref to a full commit SHA with `gh api repos/{owner}/{repo}/commits/{ref} --jq '.sha'`, then retain the release or source ref in a comment.

When the project commits migrations from a migration tool, also add a separate `migration-drift` job per `rules/migration-drift.md`, and tell the user to make it a required status check.

### 4. Workflow Template

Route by the language detected in Step 1. The template below is the **JS/TS default**; for any other detected language, load `references/<lang>.md` and use its template instead:

| Language | Template |
|----------|----------|
| **JS/TS** (Node) | the template below |
| **Go** | `references/go.md` |
| **Python** | `references/python.md` |
| **Rust** | `references/rust.md` |
| **Ruby** | `references/ruby.md` |

Every template applies the same `rules/` (action pinning, `permissions`, concurrency). Adapt the JS/TS template to the detected package manager (replace `<pm>` with the detected package manager):

```yaml
name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@<full-SHA>  # <latest release>
      - uses: actions/setup-node@<full-SHA>  # <latest release>
        with:
          node-version: 'lts/*'
          cache: '<pm>'
      - run: <pm> install --frozen-lockfile
      - run: <pm> check
      - run: <pm> test
      - run: <pm> build
```

For pnpm, replace the `actions/setup-node` and install steps with a single `pnpm/setup` step on its default settings (`rules/node-version.md`): with no inputs it installs pnpm from `devEngines.packageManager` and Node from `devEngines.runtime`, then runs `pnpm install`.

## Audit Mode

### 1. Scan Workflows

Read all `.yml` and `.yaml` files in `.github/workflows/` and audit against every rule in the `rules/` directory.

### 2. Report Format

Report each finding as `path:line` — what is wrong → the fix, grouped by severity, and close with per-severity counts and the number of files scanned.

Report **all** rule violations found, not just pinning and permissions — migration drift, concurrency, node version, caching, triggers, matrix, and parallel steps too.

### 3. Auto-Fix

When fixing, look up commit SHAs for pinning using `gh api`.

## Rules

| Rule | Impact | File |
|------|--------|------|
| Action pinning | HIGH | `rules/action-pinning.md` |
| Permissions | HIGH | `rules/permissions.md` |
| Migration drift | HIGH | `rules/migration-drift.md` |
| Concurrency | MEDIUM | `rules/concurrency.md` |
| Node version | MEDIUM | `rules/node-version.md` |
| Caching | MEDIUM | `rules/caching.md` |
| Triggers | LOW | `rules/triggers.md` |
| Matrix strategy | LOW | `rules/matrix.md` |
| Parallel steps | LOW | `rules/parallel-steps.md` |

© tartinerlabs · MIT · tartinerlabs/skills

Similar skills

All skills for DevOps and infrastructure →

github-actions by other authors comes first.

github-actions callstackincubator Reusable GitHub Actions patterns to build React Native apps for iOS simulators and Android emulators in the cloud and download artifacts. Simplifies CI pipeline setup and scripted retrieval via gh CLI or REST API. CX Codex +1 10,900installs github-actions devops-skills A skill that gets your agent writing GitHub Actions workflows: builds, tests, deploys, secrets, caching and self-hosted runners. CX Codex +1 388installs github-actions bobmatnyc A reference skill for GitHub Actions CI/CD workflows. Helps configure automated builds, test pipelines, and deployments in repository YAML files. CX Codex +1 758installs github-actions wendylabsinc A skill that steers the agent through GitHub Actions authoring: vendor actions over shell scripts, verified versions, minimal job permissions. CX Codex +1 ★ 62repo stars wizard Matt Pocock This skill creates an interactive bash wizard for manual setup steps, CI secrets, third-party dashboards, and one-off migrations. 553,369installs hyperframes-cli heygen-com Controls HyperFrames video workflows from the CLI: audits layouts and contrast, edits timeline clips, captures snapshots, and renders locally or in cloud runtimes. CX Codex +1 1,300,000installs setup-pre-commit Matt Pocock This skill configures pre-commit checks for a JavaScript repository, running Prettier, type checking, and tests before each commit. 489,289installs using-git-worktrees Jesse Vincent Prepares an isolated workspace before feature work or plan execution. It checks the repository first, then uses native worktree support or Git. CX Codex 217,153installs finishing-a-development-branch Jesse Vincent This skill checks the test suite and guides branch completion: merge locally, open a Pull Request, or leave the work in place. CX Codex 214,439installs orca-cli stablyai The skill lets an agent manage Orca worktrees, terminals, artifacts and the built-in browser through the orca CLI. Useful when your work already runs inside Orca. CX Codex +1 353,600installs

From the same set9

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor