act
Skill1 starsChanged 5 months agoMITView on GitHub
Second line of defence after actionlint: runs GitHub Actions workflows locally with act (nektos/act) to check they actually work, not just that they parse. Proposes the run on a workflow commit; never blocks it.
- Installs packages
4 other projects use a version of this.
Adopted by
Most recently taken up by
- gabrielkoerich/skillstheir own version, first seen Nov 1, 2026
- fore-vip/skillstheir own version, first seen Sep 4, 2026
- apideck-libraries/api-skillstheir own version, first seen Aug 13, 2026
- YehudaFrankel/clankbraintheir own version, first seen Apr 16, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- YehudaFrankel/clankbrain★ 16same name
- gabrielkoerich/skills★ 8same name
- apideck-libraries/api-skills★ 4same name
- fore-vip/skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository19 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- actionlintSkill
- dependency-auditSkill
- dockerfileSkill
- fdSkill
- git-flow-nextSkill
- joSkill
- miseSkill
- mktemp-dSkill
- npx-skillsSkill
- roastSkill
- sembrSkill
- shell-snippet-fmtSkill
- skill-newSkill
- ssh-auditSkill
- teeSkill
- vcs-commit-msgSkill
- vcs-identity-checkSkill
- whichSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. 0 are common, 9 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
9
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 25
Use it as a proposal, not a gate: once actionlint is clean on the staged workflows, offer to run them through act and surface real failures …
- Distinctive: line 34
If anything is ambiguous — above all, whether a failure is the workflow's fault or just the local environment's — ask the operator instead …
- Distinctive: line 53
Check them first; if any is missing, tell the operator, skip the run, and let the commit proceed — never block over a precondition.
- Very specific: line 67
If none is set, ask the operator to run act once and pick Medium (~500MB.
- Very specific: line 69
If you only discover this at run time (the fatal EOF), stop and ask then.
- Very specific: line 87
If act isn't installed, treat installing it as a separate ask — it edits mise.toml (see below), which the run proposal doesn't authorize.
- Distinctive: line 105
Don't pre-filter jobs — let unrunnable ones surface as env failures (step 5).
- Distinctive: line 126
Can't tell?: Ask the operator.
- Distinctive: line 128
After the run (or a skip), the commit proceeds.
- Very specific: line 144
Never brew, go install, or a curl-pipe script.
- Distinctive: line 145
If act can't be installed that way, or Docker isn't available, tell the operator and skip the run.
- Distinctive: line 156
Treat act as "does this get off the ground locally", and the real CI as the source of truth.
- Distinctive: line 167
After the run, state which workflows or jobs ran, the outcome of each (passed / real failure / not-checked-locally with the reason), and …
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
act
act is the second line of defence for GitHub Actions workflows, behind the actionlint skill. actionlint is static — it proves a workflow parses and its expressions and types are sound. act is dynamic — it runs the workflow locally in Docker to see whether it actually works.
Use it as a proposal, not a gate: once actionlint is clean on the staged workflows, offer to run them through act and surface real failures — but never block the commit on act. Its local run can't cover everything, and the local environment is fragile.
When in doubt, ask the operator
If anything is ambiguous — above all, whether a failure is the workflow's fault or just the local environment's — ask the operator instead of guessing. One question is cheaper than calling a broken workflow fine, or scaring the operator about a failure that's only a missing local image. This applies to every step below.
When this runs
- After actionlint reports clean on the staged workflow files — don't spend Docker on a workflow the cheap static check already rejected.
- It's a proposal on every commit that touches a workflow, not a requirement. Offer the run; if the operator declines, skip it — the commit is not blocked.
Preconditions
The run needs a working Docker and a preconfigured image. Check them first; if any is missing, tell the operator, skip the run, and let the commit proceed — never block over a precondition.
- Docker reachable —
docker infosucceeds (any provider: Docker Desktop, colima, or podman viapodman info). Missing binary or daemon down → act can't run; skip. - A default runner image is configured.
On its first run act interactively asks for an image size,
and with no TTY it dies with
fatal EOF— so it must be set up beforehand. The config lives in act'sactrc(~/.config/act/actrc,~/.actrc, or~/Library/Application Support/act/actrcon macOS); a configured one has a-Pdefault line. If none is set, ask the operator to runactonce and pick Medium (~500MB; Large is ~70GB, Micro is node-only) — don't guess an image. If you only discover this at run time (thefatal EOF), stop and ask then. - Host flags.
- Apple Silicon — add up front:
uname -m→arm64→--container-architecture linux/amd64. - Daemon-socket bind-mount failure (seen with colima) —
add only reactively, after the first run shows it:
--container-daemon-socket -.
- Apple Silicon — add up front:
Procedure
- Confirm actionlint is clean on the staged workflows first —
via the actionlint skill, or a direct
actionlintrun. act is the second line, not the first. - Propose the run to the operator in one line — "run the staged workflow(s) through act to check they actually work?". Declined → skip and let the commit proceed (act never blocks).
- Check the preconditions above,
plus that act is installed (
command -v act). If act isn't installed, treat installing it as a separate ask — it editsmise.toml(see below), which the run proposal doesn't authorize. Any precondition missing → tell the operator, skip, let the commit proceed. Run act on the staged workflow file(s) — one
-Wrun per staged workflow file. act reads the working tree, not the index, so first confirm the file has no unstaged edits (git diff -- <file>is empty); if it has, re-stage (git add) before running:mise exec -- act -W .github/workflows/<staged-file> [host-flags]mise exec --only if act isn't already onPATH.[host-flags]= whichever precondition-3 flags apply (arch / socket).- act picks the event (
push, or the workflow's only one); narrow with<event>or-j <job>if needed. - Don't pre-filter jobs — let unrunnable ones surface as env failures (step 5).
- Secrets: act reads
.secretsautomatically when it exists (or pass--secret-file); never invent them — a missing secret is an environment skip, not a failure.
- Read the result — split the two failure kinds,
because act's exit code doesn't. Go by the log markers:
- Success — jobs end
✅/Job succeeded: the workflow actually ran locally (within what act covers). - Real workflow failure — a workflow step (not "Set up job") exits non-zero on its own logic. Show it, recommend a fix, but don't block the commit.
- Environment / unsupported failure — it couldn't get off the ground:
failed to start container,Error response from daemon,unable to find imageor no image for a macos/windows runner,fatal ... EOF(image prompt), a missing secret, OIDC, socket, arch. Also acommand not foundfor a standard tool — almost always the Medium image lacking it, not the workflow; you can't inspect the image's contents, so default to env, and ask the operator if it matters. Report these as "not checked locally" with the reason, not as a failure. - Can't tell? Ask the operator.
- Success — jobs end
- Never block the commit on act, whatever the outcome. After the run (or a skip), the commit proceeds.
Installing act when it's missing
Install with mise — and note that Docker is a separate, required dependency;
act can't run without it.
Under [tools] in mise.toml:
[tools]
act = "<version>"Resolve <version> from mise latest act
(all versions: mise ls-remote act) — pin it fully, no latest.
The raw name act resolves through aqua to aqua:nektos/act.
Never brew, go install, or a curl-pipe script.
If act can't be installed that way, or Docker isn't available,
tell the operator and skip the run.
Honest coverage — act is not your CI
A green act run is a smoke test, not proof the real CI passes. act does not run macos/windows runners, OIDC, or environments and env-scoped secrets; it ignores concurrency, timeouts, continue-on-error, step summaries, and annotations; caching and services are partial. Treat act as "does this get off the ground locally", and the real CI as the source of truth.
Not in scope
- Replacing real CI (act is a smoke test — see coverage above).
- Supplying or inventing secrets / credentials.
- Forcing runs that can't work locally — report them, don't fight them.
Reporting
After the run, state which workflows or jobs ran, the outcome of each (passed / real failure / not-checked-locally with the reason), and that the commit is not blocked either way.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

