authoring-github-workflows

Validate GitHub Actions workflow YAML and fix expression quoting errors with actionlint.

1|Updated Jul 27, 2026
One-click install
npx skills add https://github.com/FittyAr/Cardscape --skill authoring-github-workflows-fittyar
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: authoring-github-workflows
Source: https://github.com/FittyAr/Cardscape/tree/main/.agents/skills/authoring-github-workflows
Command: npx skills add https://github.com/FittyAr/Cardscape --skill authoring-github-workflows-fittyar

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? GitHub Actions workflow files can be syntactically valid YAML yet still be rejected by GitHub Actions at load time, producing the opaque failure "This run likely failed because of a workflow file issue" with zero jobs started. The most common cause is a # inside an unquoted ${{ }} expression being parsed as a YAML comment, silently truncating the value — a bug that yaml.safe_load and yamllint cannot catch. ## Core Features & Use Cases - Expression Quoting Rules: Teaches exactly when a run-name, name, if, env, or with scalar containing ${{ }} expressions must be wrapped in double quotes, with a reference table of characters that force quoting. - actionlint Validation: Provides a pinned, checksum-verified actionlint download and invocation (-shellcheck= -pyflakes=) that catches expression-grammar errors plain YAML linters miss. - Use Case: A PR edits a workflow's run-name to include format('Evaluate PR #{0}', ...) and every subsequent run on main fails with no jobs starting. This Skill diagnoses the truncated-expression bug, quotes the scalar correctly, and confirms the fix with actionlint before merge. ## Quick Start Review my changed files under .github/workflows/ for unquoted ${{ }} expressions containing # or colons, fix the quoting, and validate them with actionlint.

Frequently Asked Questions about authoring-github-workflows

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why does my GitHub Actions workflow fail with 'This run likely failed because of a workflow file issue'?▼

This error usually means the workflow file is valid YAML but invalid for GitHub Actions. The most common cause is a `#` inside an unquoted `${{ }}` expression being parsed as a YAML comment, truncating the value into an unterminated expression. Quote the scalar and validate with actionlint.

How do I validate GitHub Actions workflow files before pushing?▼

Run actionlint against your workflow files, for example `actionlint -shellcheck= -pyflakes= .github/workflows/*.yml`. It understands the Actions schema and expression grammar, catching errors that yaml.safe_load and yamllint miss. A clean exit code 0 means the workflows are structurally valid.

When do I need to quote a ${{ }} expression in GitHub Actions YAML?▼

Quote the entire scalar when the value contains a `${{ }}` expression plus a literal `#`, a colon followed by a space, or a leading special character like `*`, `&`, `!`, or `@`. Prefer double quotes when the inner expression uses single quotes, and never escape the `${{ }}` braces.

Is yamllint enough to check GitHub Actions workflows?▼

No. YAML-only linters like yamllint and yaml.safe_load accept the truncated-comment form where `#` silently cuts off an expression, so the bug passes validation but GitHub Actions refuses to run the file. Only actionlint (or pushing and watching Actions parse it) validates the Actions layer.

Does this skill cover designing what a workflow should do?▼

No. It covers only syntactic and structural correctness of workflow YAML — quoting, parsing, and actionlint-level validity. For semantic and functional workflow design, including agentic-workflow behavior, it defers to the complementary agentic-workflows agent guidance.