--- name: local-action-verification description: Set up a repository for local GitHub Actions verification using act, so Jules can validate CI before pushing allowed-tools: - "Bash" - "Read" - "Write" --- # 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](https://github.com/nektos/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: 1. **install-act.sh** — Installs `act` if missing (platform-aware, sudo fallback) 2. **run-act.sh** — Runs `act` in the background with log polling to avoid agent timeouts 3. **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: ```bash 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: ```markdown ## 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 bash scripts/act/run-act.sh "push -j " ``` With matrix: `bash scripts/act/run-act.sh "push -j --matrix :"` 3. If the run fails, read the log output, fix the code, and re-run 4. After verification, clean up: ```bash rm -f act_output.log git checkout ``` ### 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: 1. Docker must be installed and running on any machine (or Jules VM) where verification runs 2. `act` will be auto-installed on first use via `scripts/act/install-act.sh` 3. If workflows require secrets, create a `.secrets` file (KEY=VALUE format) — never commit it 4. 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](resources/troubleshooting.md) — Detailed solutions for common issues