gh-actionlint · git:20260612.ca1fbc5 · 2026-06-12 · sha256 2eaf46f901b8e838

gh-actionlint git:20260612.ca1fbc5A

Immutable. This exact content never changes and is served at /api/v1/blob/2eaf46f901b8e838.

---
name: gh-actionlint
description: Validate GitHub Actions workflow YAML with actionlint when editing files under `.github/workflows/`, checking CI workflow syntax, diagnosing GitHub Actions expression or schema errors, or when the user asks to lint/check Actions workflows. Prefer `bunx github-actionlint` when `bun` is available and fall back to `npx --yes github-actionlint`; use this proactively after modifying GitHub Actions workflows.
---

# GH Actionlint

## Purpose

Use `actionlint` to catch GitHub Actions workflow mistakes before CI does:
YAML syntax errors, invalid workflow keys, expression mistakes, bad `needs`
references, invalid triggers, and other common Actions-specific issues.

Generic YAML linters are useful for indentation, but they do not understand
GitHub Actions semantics. Prefer this skill whenever the file is a GitHub
Actions workflow.

## When To Use

Use this skill when:

- The user asks to check, lint, validate, or debug GitHub Actions workflows.
- You modify files under `.github/workflows/`.
- CI fails with workflow parsing, expression, trigger, `needs`, matrix, or
  Actions schema errors.
- The user asks whether a workflow step shape is valid, such as an unnamed
  `run:` step.

## Workflow

1. Work from the repository root when possible.
2. Identify the workflow targets:
   - If the user named specific files, check those files.
   - Otherwise, check `.github/workflows/`.
3. Choose the runner:
   - If `bun` is available, use `bunx github-actionlint`.
   - Otherwise, if `npx` is available, use `npx --yes github-actionlint`.
   - If neither exists, tell the user that `bun` or `npx` is needed.
4. Run actionlint.
5. Report whether the workflows passed. If there are failures, quote the
   relevant actionlint messages and suggest the smallest fix.

## Commands

Check all workflows:

```bash
if command -v bun >/dev/null 2>&1; then
  bunx github-actionlint .github/workflows/
elif command -v npx >/dev/null 2>&1; then
  npx --yes github-actionlint .github/workflows/
else
  echo "need bun or npx on PATH" >&2
  exit 1
fi
```

Check specific workflow files:

```bash
if command -v bun >/dev/null 2>&1; then
  bunx github-actionlint .github/workflows/tests.yaml
elif command -v npx >/dev/null 2>&1; then
  npx --yes github-actionlint .github/workflows/tests.yaml
else
  echo "need bun or npx on PATH" >&2
  exit 1
fi
```

Use `-color -verbose` when extra diagnostics are helpful:

```bash
bunx github-actionlint -color -verbose .github/workflows/
```

## Reporting Style

Keep the result concise:

- Say which command ran.
- Say whether actionlint passed.
- For failures, include file path, line/column if provided, and the exact rule
  message.
- Distinguish Actions validation errors from unrelated shellcheck warnings when
  actionlint reports both.
- Avoid adding `github-actionlint` to `package.json` unless the user explicitly
  wants it pinned as a project dependency.

## Test Prompts

Use these prompts to sanity-check the skill behavior:

- "I changed `.github/workflows/tests.yaml`; can you check if the workflow YAML
  is valid?"
- "While you're editing the GitHub Action, please run the action linter before
  you finish."
- "CI says my workflow has an unexpected key under `push`; can you diagnose the
  Actions YAML?"