plugins/gha-dev/skills/creating-gha/SKILL.md
Creates GitHub Actions for the Marketplace. Use when scaffolding a new action, implementing composite steps, writing BATS tests, or preparing a Marketplace release.
npx skillsauth add qte77/claude-code-utils-plugin creating-ghaInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Target: $ARGUMENTS
Creates a Marketplace-ready composite GitHub Action with TDD, signed commits, and proper release flow.
references/marketplace-checklist.md — action.yaml fields, signed commits, release flow, gotchasreferences/python-gha-patterns.md — full Python composite action walkthrough (uv, pyproject.toml, CI)references/companion-plugins.md — companion plugins by workflow phase (tdd-core, python-dev, simplify, security-audit, commit-helper, makefile-core)See references/marketplace-checklist.md for full reference.
Required action.yaml fields:
name — unique on Marketplace (check before using)description — shown in search resultsbranding — icon (Feather icon name) + color (white/yellow/blue/green/orange/red/purple/gray-dark)Pick the layout that matches the action's language:
Shell-based (composite with inline run: or scripts/*.sh):
action.yaml # composite action definition + branding
scripts/ # extracted shell logic (when inline run: grows too large)
tests/unit/ # BATS test files
.github/workflows/ # ci.yaml (bats + actionlint + shellcheck), release.yaml
README.md # usage example with @vN, inputs table, version badge
Python-based (composite calling uv run):
action.yaml # composite action definition + branding
src/ # Python source (app.py entry point)
tests/ # pytest tests
.github/workflows/ # ci.yaml (pytest + ruff), release.yaml
pyproject.toml # deps, ruff, bumpversion
uv.lock # committed, CI uses --frozen
README.md # usage example with @vN, inputs table, version badge
See references/python-gha-patterns.md for the full Python walkthrough.
RED — infra tests first:
# tests/unit/test_action.bats
@test "action.yaml exists" { [ -f action.yaml ]; }
@test "action.yaml has name field" { grep -q "^name:" action.yaml; }
@test "action.yaml has description field" { grep -q "^description:" action.yaml; }
@test "action.yaml has branding" { grep -q "^branding:" action.yaml; }
@test "action.yaml has runs.using composite" { grep -q "using: composite" action.yaml; }
Run: bats tests/unit/ — all must fail first.
GREEN — implement to pass:
Write action.yaml with required fields. Add scripts/ and steps. Run bats tests/unit/ — all pass.
VALIDATE:
actionlint
shellcheck scripts/*.sh
Use signed commit via GitHub API (blob→tree→commit→branch→PR→squash).
See references/marketplace-checklist.md for the full bash pattern.
Never git push directly to main.
release.yaml workflow (uses bump-my-version with commit=false tag=false)v0.1.0 tag + GitHub Release + floating v0 tagactionlint
shellcheck scripts/*.sh
bats tests/unit/
All must pass before PR creation.
- uses: astral-sh/setup-uv@v6
with:
enable-cache: true
- run: |
uv sync --frozen --no-dev --project "${{ github.action_path }}"
uv run --project "${{ github.action_path }}" python "${{ github.action_path }}/src/app.py"
development
Analyzes industry websites for design patterns, layout, typography, and content strategies using first-principles thinking. Use when researching website design, UI patterns, or competitive design analysis.
development
Audits website usability for UX optimization, covering forms, navigation, validation, and microcopy. Use when reviewing user experience, task completion flows, or interface friction points.
development
Audits website accessibility for WCAG 2.1 AA compliance, generating findings and code fixes. Use when reviewing accessibility, keyboard navigation, screen reader compatibility, or inclusive design.
development
Writes tests following TDD (using vitest and @testing-library/react) best practices. Use when writing unit tests, integration tests, or component tests in TypeScript.