mcpbeat Sign in

Local Action Verification Agent Skill

Set up a repository for local GitHub Actions verification using act, so Jules can validate CI before pushing

867 tokens
context cost
SKILL.md, read when the skill is used
5
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
100
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/google-labs-code/jules-skills --skill local-action-verification

What comes with it

10 780 bytes besides the instruction
README.md
resources/troubleshooting.md
scripts/install-act.sh
scripts/run-act.sh

The instruction itself

9 sections, as written by the author

Local Action Verification with act

You are setting up a repository so that Jules (or any agent) can run GitHub Actions workflows locally using act to verify code changes pass CI before pushing.

What You're Setting Up

Two scripts and an agents.md section that enable local CI verification:

  • install-act.sh — Installs act if missing (platform-aware, sudo fallback)
  • run-act.sh — Runs act in the background with log polling to avoid agent timeouts
  • AGENTS.md section — Instructions Jules reads to know how to use these scripts

Setup Steps

Step 1: Copy scripts to the repository

Copy the scripts/ directory from this skill into the target repository at scripts/act/:

Target structure:
scripts/act/
├── install-act.sh
└── run-act.sh

Make sure the scripts are executable:

chmod +x scripts/act/install-act.sh scripts/act/run-act.sh

Step 2: Add instructions to AGENTS.md

Append the following section to the repository's AGENTS.md file (create it if it doesn't exist). This is how Jules discovers the local verification capability:

## Local CI Verification

Before pushing code or opening a PR, verify changes pass CI locally using `act`.

### Prerequisites
- Docker must be running
- If `act` is not installed, run: `bash scripts/act/install-act.sh`

### How to Verify

1. Read `.github/workflows/` to find the CI workflow and identify the job ID
2. Run the verification script:

bash scripts/act/run-act.sh "push -j <JOB_ID>"

   With matrix: `bash scripts/act/run-act.sh "push -j <JOB_ID> --matrix <KEY>:<VALUE>"`
3. If the run fails, read the log output, fix the code, and re-run
4. After verification, clean up:

rm -f act_output.log

git checkout <any unintended file changes>


### Configuration
- Timeout: `ACT_TIMEOUT=900 bash scripts/act/run-act.sh "..."`  (default: 600s)
- Poll interval: `ACT_POLL=15 bash scripts/act/run-act.sh "..."`  (default: 10s)
- Custom image: pass `-P ubuntu-latest=node:20-bookworm` in the arguments for faster pulls

Step 3: Update .gitignore

Append these entries to .gitignore if they don't already exist:

# act artifacts
act_output.log
.secrets

Step 4: Print next steps for the user

Tell the user:

  • Docker must be installed and running on any machine (or Jules VM) where verification runs
  • act will be auto-installed on first use via scripts/act/install-act.sh
  • If workflows require secrets, create a .secrets file (KEY=VALUE format) — never commit it
  • Commit all generated files

Troubleshooting

  • Docker not running: act requires Docker. Ensure the Docker daemon is started.
  • Image pull slow: First run downloads ~2GB+. Use -P ubuntu-latest=node:20-bookworm for faster pulls.
  • ARM64 issues: On Apple Silicon, add --container-architecture linux/amd64 to act arguments.
  • Secrets required: Create a .secrets file and pass --secret-file .secrets in the act arguments.
  • Timeout: Increase with ACT_TIMEOUT=1200 bash scripts/act/run-act.sh "...".

Resource References

  • Troubleshooting Guide — Detailed solutions for common issues

How to use it

Copy the folder

Take google-labs-code/local-action-verification from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.