rhysd/actionlint is tracked by TopGit as an automation project, with 4.1k stars on GitHub, written primarily in Go. :octocat: Static checker for GitHub Actions workflow files
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
test.yaml:3:5: unexpected key "branch" for "push" section. expected one of "branches", "branches-ignore", "paths", "paths-ignore", "tags", "tags-ignore", "types", "workflows" [syntax-check]
|
3 | branch: main
| ^~~~~~~
test.yaml:5:11: character '\' is invalid for branch and tag names. only special characters [, ?, +, *, \, ! can be escaped with \. see `man git-check-ref-format` for more details. note that regular expression is unavailable. note: filter pattern syntax is explained at https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet [glob]
|
5 | - 'v\d+'
| ^~~~
test.yaml:10:28: label "linux-latest" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2025-vs2026", windows-2022", "windows-11-arm", "ubuntu-slim", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xlarge", "macos-latest-large", "macos-26-intel", "macos-26-xlarge", "macos-26-large", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xlarge", "macos-14-large", "macos-14", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file [runner-label]
|
10 | os: [macos-latest, linux-latest]
| ^~~~~~~~~~~~~
test.yaml:13:41: "github.event.head_commit.message" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/reference/security/secure-use#good-practices-for-mitigating-script-injection-attacks for more details [expression]
|
13 | - run: echo "Checking commit '${{ github.event.head_commit.message }}'"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
test.yaml:17:11: input "node_version" is not defined in action "actions/setup-node@v4". available inputs are "always-auth", "architecture", "cache", "cache-dependency-path", "check-latest", "node-version", "node-version-file", "registry-url", "scope", "token" [action]
|
17 | node_version: 18.x
| ^~~~~~~~~~~~~
test.yaml:21:20: property "platform" is not defined in object type {os: string} [expression]
|
21 | key: ${{ matrix.platform }}-node-${{ hashFiles('**/package-lock.json') }}
| ^~~~~~~~~~~~~~~
test.yaml:22:17: receiver of object dereference "permissions" must be type of object but got "string" [expression]
|
22 | if: ${{ github.repository.permissions.admin == true }}
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quick start
Install actionlint command by downloading the released binary or by Homebrew or by go install. See
the installation document for more details like how to manage the command with several package managers
or run via Docker container.
go install github.com/rhysd/actionlint/cmd/actionlint@latest
Basically all you need to do is run the actionlint command in your repository. actionlint automatically detects workflows and
checks errors. actionlint focuses on finding out mistakes. It tries to catch errors as much as possible and make false positives
as minimal as possible.
actionlint
Another option to try actionlint is the online playground. Your browser can run actionlint through WebAssembly.
See the usage document for more details.
Documents
Checks: Full list of all checks done by actionlint with example inputs, outputs, and playground links.
Installation: Installation instructions. Prebuilt binaries, a Docker image, building from source, a download script
(for CI), supports by several package managers are available.
Usage: How to use actionlint command locally or on GitHub Actions, the online playground, an official Docker image,
and integrations with reviewdog, Problem Matchers, super-linter, pre-commit, VS Code.
Configuration: How to configure actionlint behavior. Currently, the labels of self-hosted runners, the configuration
variables, and ignore patterns of errors for each file paths can be set.
Go API: How to use actionlint as Go library.
References: Links to resources.
Bug reporting
When you see some bugs or false positives, it is helpful to file a new issue with a minimal example
of input. Giving me some feedbacks like feature requests or ideas of additional checks is also welcome.
Yes — rhysd/actionlint ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/rhysd/actionlint.
What else is in the Automation space?
rhysd/actionlint is tracked by TopGit under the Automation category, alongside 5 GitHub-tagged topics. Trending and Topics pages list peer repositories of comparable stars and language.
What is rhysd/actionlint?
rhysd/actionlint (rhysd/actionlint) is a Go project on GitHub. From the project's own README: :octocat: Static checker for GitHub Actions workflow files
What license does rhysd/actionlint use?
rhysd/actionlint is released under the MIT license. Always verify the LICENSE file directly on GitHub for the authoritative terms — license strings can be edited out of sync with a project's actual stance.
Where can I see rhysd/actionlint in action?
The project maintains a homepage at https://rhysd.github.io/actionlint/. The README tab on this page also usually contains screenshots and a quickstart.
Where do I read more about rhysd/actionlint?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/rhysd/actionlint is the definitive source.
Why is rhysd/actionlint categorized under Automation?
TopGit places rhysd/actionlint in the Automation category based on its GitHub topics and description (tagged: "actions", "ci", "github-actions"). Categories are assigned from real repository metadata, not editorial guesswork.
Read full README in the tab above.
Want a second opinion on actionlint?
Ask an AI that can read this page — one click and you get its take on actionlint.