Skip to main content

actionlint

Install, run, and fix errors from actionlint — the GitHub Actions workflow linter. Load when validating `.github/workflows/*.yml` files after migration or generation.

Quellinformationen

Repository
github/actions-migrations-via-copilot
Letzte Quellaktivität
25. September 2026 um 15:51
Erkannte Sprache von SKILL.md
Englisch
Sterne
79
Forks
21

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
actionlint
description
Install, run, and fix errors from actionlint — the GitHub Actions workflow linter. Load when validating `.github/workflows/*.yml` files after migration or generation.
# actionlint [actionlint](https://github.com/rhysd/actionlint) is a static analysis tool for GitHub Actions workflow files. Always run it after generating or modifying workflows and resolve every finding before completing. ## Install ### Linux (pinned, checksum-verified) ```bash ACTIONLINT_VERSION="1.7.11" curl -fsSLO "https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VERSION}/actionlint_${ACTIONLINT_VERSION}_linux_amd64.tar.gz" curl -fsSLO "https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VERSION}/actionlint_${ACTIONLINT_VERSION}_checksums.txt" sha256sum --check --ignore-missing "actionlint_${ACTIONLINT_VERSION}_checksums.txt" # Optional: gh attestation verify --repo rhysd/actionlint "actionlint_${ACTIONLINT_VERSION}_linux_amd64.tar.gz" tar xzf "actionlint_${ACTIONLINT_VERSION}_linux_amd64.tar.gz" -C /tmp actionlint sudo install -m 755 /tmp/actionlint /usr/local/bin/actionlint rm "actionlint_${ACTIONLINT_VERSION}_linux_amd64.tar.gz" "actionlint_${ACTIONLINT_VERSION}_checksums.txt" ``` ### macOS ```bash brew install actionlint ``` ### Verify install ```bash actionlint --version ``` ## Run ```bash # Lint all workflows actionlint .github/workflows/*.yml # Lint a specific file actionlint .github/workflows/ci.yml # Capture output for the migration report actionlint .github/workflows/*.yml 2>&1 | tee /tmp/actionlint-output.txt ``` **Zero output = no errors.** Any output must be resolved. ## Output format ``` path/to/workflow.yml:LINE:COL: ERROR MESSAGE [rule-name] | NN | <offending line> | ^~~~ ``` Each finding shows the file, line/column, a human-readable message, the rule name in `[brackets]`, and a code snippet pointing at the problem. ## Common errors and fixes ### `pin-actions` — action not pinned to a commit SHA ``` workflow.yml:10:9: action "actions/checkout@v4" is not pinned to a commit SHA [pin-actions] ``` Fix: resolve the tag to a commit SHA and pin to it. Follow the capability probe and resolution order in the `migration-core` skill: ```bash gh api repos/actions/checkout/commits/v4.1.7 --jq .sha ``` ```yaml # Before - uses: actions/checkout@v4 # After — SHA for v4.1.7, from the gh api call above # actions/checkout v4.1.7 - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 ``` If the probe reports `NETWORK_UNAVAILABLE`, stop and tell the user which actions need pinning rather than inventing a SHA or shipping an unpinned ref. ### `shellcheck` — shell script issues in `run:` steps ``` workflow.yml:12:9: shellcheck reported issue in this script: SC2086: ... ``` Fix: quote variables, use `${{ }}` for expressions, follow the shellcheck suggestion inline. ### `action` — unknown or malformed `uses:` reference ``` workflow.yml:8:9: can't parse action "owner/repo" [action] ``` Fix: ensure `uses: owner/repo@SHA` with a valid pinned SHA. Verify the action exists on GitHub Marketplace. ### `expression` — invalid `${{ }}` syntax ``` workflow.yml:20:14: unexpected end of expression [expression] ``` Fix: check bracket balance, quoting, and that context/property names are spelled correctly (e.g. `github.event.pull_request.head.sha`). ### `events` — invalid trigger or event filter ``` workflow.yml:3:5: unknown event "pull-request" [events] ``` Fix: use the exact GitHub event name (`pull_request`, not `pull-request`). Check the [events docs](https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows). ### `permissions` — invalid permission scope or value ``` workflow.yml:6:5: unknown permission scope "pull-requests" [permissions] ``` Fix: permission keys are hyphenated (`pull-requests`, `id-token`); values must be `read`, `write`, or `none`. ### `job-needs` — `needs:` references a job that doesn't exist ``` workflow.yml:30:12: job "build" is not defined [job-needs] ``` Fix: ensure the job ID in `needs:` exactly matches a defined job key. ### `credentials` — `username`/`password` used without both fields ``` workflow.yml:18:9: "password" is required if "username" is set in credentials [credentials] ``` Fix: provide both `username` and `password` in the `credentials:` block, or remove both. ### `deprecated` — deprecated context or syntax ``` workflow.yml:25:14: "github.event.action" is not available for this event [deprecated] ``` Fix: follow the suggestion in the message to use the current equivalent. ## Iterating to zero errors 1. Run `actionlint`, read every finding. 2. Fix the highest-severity / most upstream issues first (parse errors before logic errors). 3. Re-run after each batch of fixes. 4. Paste the **final clean run output** (or `No issues found`) into the migration report under **Validation Results**. ## Troubleshooting | Symptom | Cause | Fix | |---|---|---| | `actionlint: command not found` | Not installed or not on PATH | Re-run the install steps above | | `Error: no workflow files are found` | Glob matched nothing | Confirm files exist at `.github/workflows/*.yml` | | Warnings about `shellcheck` not found | shellcheck not installed | `apt-get install shellcheck` or `brew install shellcheck` |
Auf GitHub ansehen