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.

ソース情報

リポジトリ
github/actions-migrations-via-copilot
ソースの最終更新活動
2026年9月25日 15:51
検出された SKILL.md の言語
英語
スター
76
フォーク
19

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
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` |
GitHubで見る