| Crates.io | gha-lint |
| lib.rs | gha-lint |
| version | 0.1.0 |
| created_at | 2025-12-05 00:36:11.909794+00 |
| updated_at | 2025-12-05 00:36:11.909794+00 |
| description | Static analyzer for GitHub Actions workflows. It scans `.github/workflows/*.yml` / `*.yaml`, parses YAML, and runs deterministic checks. It **DOES NOT** include network requests, dry-runs, or command execution. It's a **linter**. So no network requests, no dry-run, no command execution. |
| homepage | https://github.com/thegreatbey/gha-lint |
| repository | https://github.com/thegreatbey/gha-lint |
| max_upload_size | |
| id | 1967383 |
| size | 35,027 |
Static analyzer for GitHub Actions workflows. It scans .github/workflows/*.yml / *.yaml, parses YAML, and runs deterministic checks. It DOES NOT include network requests, dry-runs, or command execution. It's a linter. So no network requests, no dry-run, no command execution.
V0 static analysis implemented. Exits non-zero if any error-level diagnostic occurs.
From source:
git clone https://github.com/thegreatbey/gha-lint.git
cd gha-lint
cargo build --release
Optionally, once published:
cargo install gha-lint
# analyze current repo
gha-lint
# or provide a path
gha-lint C:\path\to\repo
# version / help
gha-lint --version
gha-lint --help
Diagnostics follow a Clippy-like style:
error[ci::missing-on]: workflow is missing the top-level 'on:' trigger (file: .github/workflows/ci.yml, line: 12)
help: add an 'on:' block (push/pull_request/schedule/etc)
error[ci::invalid-uses]: invalid 'uses:' value: "checkout@v4" (file: .github/workflows/build.yml, line: 12)
help: actions must follow 'owner/repo@ref', e.g. 'actions/checkout@v4'
Exit codes:
0: no error-level diagnostics1: at least one error-level diagnosticon: blockjobs:needs: references (unknown job ids or wrong types)uses: syntax (owner/repo@ref, docker://, or ./local-path)cargo/rustc without toolchain setup (warning)working-directory paths./scripts/foo.sh, local actions)What gets analyzed?
Dual-licensed under MIT and Apache-2.0.