CtrlK
BlogDocsLog inGet started
Tessl Logo

claylo/actionista

GitHub Actions agent skill - helps create, review, and optimize workflows with up-to-date action versions and best practices

100

Quality

100%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

runners.mdskills/actionista/references/

Runners Reference

Complete reference for GitHub Actions runners.

GitHub-Hosted Runners

Standard Runners

LabelvCPUsRAMStorageOS
ubuntu-latest416 GB14 GBUbuntu 24.04
ubuntu-24.04416 GB14 GBUbuntu 24.04
ubuntu-22.04416 GB14 GBUbuntu 22.04
macos-latest3 (M1)7 GB14 GBmacOS 14
macos-143 (M1)7 GB14 GBmacOS 14 (Sonoma)
macos-13414 GB14 GBmacOS 13 (Ventura)
windows-latest416 GB14 GBWindows Server 2022
windows-2022416 GB14 GBWindows Server 2022
windows-2019416 GB14 GBWindows Server 2019

Larger Runners (Teams/Enterprise)

LabelvCPUsRAM
ubuntu-latest-4-cores416 GB
ubuntu-latest-8-cores832 GB
ubuntu-latest-16-cores1664 GB
ubuntu-latest-32-cores32128 GB
ubuntu-latest-64-cores64256 GB

Similar patterns for macos-* and windows-*.

ARM Runners

LabelArchitecture
ubuntu-24.04-armARM64
macos-14ARM64 (M1)

GPU Runners (Enterprise)

Available for ML workloads. Contact GitHub for access.

Runner Selection

Basic Selection

jobs:
  build:
    runs-on: ubuntu-latest

Specific Version

jobs:
  build:
    runs-on: ubuntu-22.04  # Pin to specific version

Matrix of Runners

jobs:
  test:
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}

Self-Hosted Runner Labels

jobs:
  build:
    runs-on: self-hosted

  gpu-job:
    runs-on: [self-hosted, linux, gpu]

  specific:
    runs-on: [self-hosted, linux, x64, production]

Pre-installed Software

Ubuntu

  • Docker, Docker Compose
  • Node.js (multiple versions)
  • Python (multiple versions)
  • Go, Rust, Ruby
  • Java (multiple JDKs)
  • .NET SDK
  • PHP
  • Git, Git LFS
  • AWS CLI, Azure CLI, Google Cloud SDK
  • Terraform, Packer
  • kubectl, Helm
  • Chrome, Firefox, Edge

macOS

  • Xcode (multiple versions)
  • Homebrew
  • Node.js, Python, Ruby
  • CocoaPods, Carthage
  • fastlane
  • Chrome, Safari, Firefox

Windows

  • Visual Studio
  • .NET Framework and .NET SDK
  • Node.js, Python
  • PowerShell
  • Chocolatey
  • Docker Desktop
  • Chrome, Edge, Firefox

Runner Context

Access runner information:

steps:
  - run: |
      echo "Runner name: ${{ runner.name }}"
      echo "OS: ${{ runner.os }}"           # Linux, Windows, macOS
      echo "Arch: ${{ runner.arch }}"       # X64, ARM64
      echo "Temp: ${{ runner.temp }}"
      echo "Tool cache: ${{ runner.tool_cache }}"

Self-Hosted Runners

Setup

  1. Navigate to repository Settings → Actions → Runners
  2. Click "New self-hosted runner"
  3. Follow instructions for your OS

Runner Application

# Download
curl -o actions-runner-linux-x64.tar.gz -L \
  https://github.com/actions/runner/releases/download/v2.XXX.X/actions-runner-linux-x64-2.XXX.X.tar.gz

# Extract
tar xzf actions-runner-linux-x64.tar.gz

# Configure
./config.sh --url https://github.com/org/repo --token XXXXXX

# Run
./run.sh

# Or install as service
sudo ./svc.sh install
sudo ./svc.sh start

Labels

Default labels:

  • self-hosted
  • OS: linux, windows, macos
  • Arch: x64, arm, arm64

Custom labels:

runs-on: [self-hosted, linux, gpu, cuda-11]

Runner Groups (Enterprise)

Organize runners and control access:

jobs:
  production:
    runs-on:
      group: production-runners
      labels: [linux, x64]

Container Jobs

Run entire job in a container:

jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: node:20-alpine
      credentials:
        username: ${{ github.actor }}
        password: ${{ secrets.GITHUB_TOKEN }}
      env:
        NODE_ENV: production
      ports:
        - 80
      volumes:
        - /data:/data
      options: --cpus 2 --memory 4g

Service Containers

jobs:
  test:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:15
        env:
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: test
        ports:
          - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

      redis:
        image: redis:7
        ports:
          - 6379:6379

Access services:

steps:
  - run: |
      # In container job, use service name
      psql -h postgres -U postgres

      # In non-container job, use localhost
      psql -h localhost -p 5432 -U postgres

Performance Tips

Choose Appropriate Runner

# Fast builds: use Linux
runs-on: ubuntu-latest

# macOS/iOS builds: use macOS
runs-on: macos-latest

# Windows-specific: use Windows
runs-on: windows-latest

Larger Runners for CI

# Heavy builds benefit from more cores
runs-on: ubuntu-latest-8-cores

Cache Dependencies

- uses: actions/cache@v5
  with:
    path: ~/.npm
    key: npm-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}

Parallel Matrix Jobs

strategy:
  fail-fast: false
  max-parallel: 4  # Limit concurrent jobs
  matrix:
    os: [ubuntu-latest, macos-latest, windows-latest]

Security

Self-Hosted Runner Security

  • Never use self-hosted runners for public repos
  • Use runner groups to isolate by trust level
  • Keep runner software updated
  • Use ephemeral runners when possible
  • Limit network access

GitHub-Hosted Runner Security

  • Fresh VM for each job
  • No persistence between jobs
  • Automatic security updates
  • Isolated network

Troubleshooting

Check Available Space

- run: df -h

Check Installed Software

- run: |
    node --version
    python --version
    docker --version

Debug Runner Issues

- run: |
    echo "Runner: ${{ runner.name }}"
    echo "OS: ${{ runner.os }}"
    echo "Arch: ${{ runner.arch }}"
    uname -a
    cat /etc/os-release || true

Runner Logs

For self-hosted runners, check:

  • _diag/ directory for logs
  • svc.sh status for service status

skills

actionista

actions-index.json

SKILL.md

README.md

tile.json