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에서 보기