harness/plugins/common/claude/skills/act-local-github-actions-testing/SKILL.md
Run and debug GitHub Actions locally with `act`, including job filtering, secrets injection, event payload simulation, reusable workflow checks, and pl-repo-specific constraints.
npx skillsauth add popoffvg/dotfiles act-local-github-actions-testingInstall 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.
Run GitHub Actions workflows locally with act to validate workflow logic before pushing.
Use this skill when you need to:
.github/workflows/*.y*ml changes quicklyif, matrix, needs, concurrency, and reusable-workflow wiring--job).--eventpath).# List workflows/jobs as seen by act
act --list
# Run pull_request event
act pull_request
# Run only one job
act pull_request -j lint
# Run manual dispatch workflow
act workflow_dispatch -W .github/workflows/trigger-commit-pr.yaml
# Use explicit event payload
act pull_request --eventpath .github/events/pr.json
# Provide secrets
act pull_request -s GITHUB_TOKEN=ghp_xxx -s GH_CI_PAT=xxx
# Use env file / vars
act pull_request --env-file .env.act
-j <job>) instead of whole workflow..env.act or secret files.These are specific to mil/pl workflows and should be applied when testing that repo locally.
pl workflows include many jobs that depend on private actions, cloud auth, or self-hosted runners.
Start from low-coupling jobs:
lint reusable workflow chainactionlint job in .github/workflows/lint.yamlAvoid running full trigger-commit-pr.yaml in one shot initially.
pl uses runners like dev-ci-pl, rockylinux8-amd64, etc. Local act won’t replicate those exactly.
Use local smoke checks for logic/syntax; treat environment-specific behavior as needs-verification in CI.
pl heavily uses:
milaboratory/github-ci/actions/*milaboratory/github-ci-internal/actions/*Local act may fail pulling these without org access/token.
Recommended approach:
Common secrets referenced in workflows:
MI_LICENSEGH_CI_PATAWS_CI_TURBOREPO_S3_BUCKETNPMJS_TOKENQUAY_USERNAMEQUAY_ROBOT_TOKENCOUCHDB_*Use placeholder/local test secrets where possible; do not use production creds.
pl composes workflows via workflow_call and secrets: inherit (for example: trigger-commit-pr.yaml calls lint.yaml, build-multiplatform.yaml, test.yaml).
Local strategy:
needs, conditions, dispatch inputs).trigger-commit-pr.yaml has workflow_dispatch with deploy-staging boolean.
Use explicit dispatch payloads when testing dispatch-only branches:
deploy-staging=false firsttrue only if secrets/mocks are preparedpl uses concurrency groups and event-specific conditions (github.event_name, github.ref, PR-only comments).
Always test at least:
lint.yaml -> actionlint job onlytrigger-commit-pr.yaml PR event with deploy-staging=falsetrigger-commit-pr.yaml workflow_dispatch with deploy-staging=false.github/workflows changed files identified-s or --secret-file entry.A local act verification is complete when:
tools
Improve a whole CLAUDE.local.md — the private, per-project rules captured from user corrections. Wraps each conditional rule in a <task-relevant> block so it only surfaces for matching work, merges duplicates, generalizes one-off facts, drops stale entries, and routes raw project facts to engram. Use when the user says "improve claude.local", "clean up the local rules", "claude.local is bloated", or after the Stop hook has appended many rules.
testing
WM pipeline and conventions shared across all phases. Agents must read this before spec, impl, or verify work.
development
One entry point for spec writing, implementation, and bug fixing. Default is new (write spec → grill loop → produce notes → author TODO bodies). Other subcommands: verify (audit), revise (sync to shipped), prototype (settle a decision), code-map (diagram), impl (execute one TODO), fix (analyze cause, correct thoughts, fix behavior), help (this page). Invoke as /code <subcommand>.
development
Red-Green-Refactor cycle for bug fixes. Before fixing a bug, first write a failing test that reproduces it (Red), then make the minimal change to pass (Green), then clean up the code (Refactor). Use on any bug fix, error correction, failing test repair, or when user says "fix this bug".