
Local Action Verification
Bootstrap nektos/act scripts and AGENTS.md instructions so your coding agent runs GitHub Actions locally in Docker before you push.
Overview
Local Action Verification is an agent skill most often used in Ship (also Build integrations) that sets up nektos/act so agents can run GitHub Actions locally in Docker before pushing.
Install
npx skills add https://github.com/google-labs-code/jules-skills --skill local-action-verificationWhat is this skill?
- Copies `scripts/act/install-act.sh` and `run-act.sh` into the target repo with platform-aware install
- Adds a Local CI Verification section to `AGENTS.md` for Jules-style agent discovery
- Background act runner with log polling and timeout for long jobs
- Workflow analysis step: job IDs, matrix configs, and secrets awareness before run
- Docker prerequisite gate with explicit stop-and-tell-user when Docker is down
- 2 bootstrap scripts under scripts/act/
- 4-step agent flow: prerequisites, analyze workflows, run in Docker, heal/retry
Adoption & trust: 553 installs on skills.sh; 66 GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent changes code and pushes without knowing whether GitHub Actions would pass, wasting CI minutes and breaking main.
Who is it for?
Repos with existing GitHub Actions workflows and Docker available where an agent (e.g. Jules) should self-serve local CI verification.
Skip if: Projects without GitHub Actions YAML, hosts that cannot run Docker, or teams that only rely on hosted CI with no local parity requirement.
When should I use this skill?
A task requires verifying GitHub Actions pass locally (e.g. refactor X, verify CI) and the repo needs first-time act setup.
What do I get? / Deliverables
The repo gains act scripts and AGENTS.md guidance so the next task can install act, run workflows locally, and fix failures before git push.
- scripts/act/install-act.sh and run-act.sh
- AGENTS.md Local CI Verification section
- Documented act invocation pattern for agents
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Ship is the canonical shelf because the skill’s payoff is pre-push CI confidence—catching workflow failures before they hit remote runners. Testing subphase fits local execution of build, test, and lint jobs defined in `.github/workflows/` rather than production monitoring or release tagging alone.
Where it fits
After adding a new workflow job, bootstrap act so the agent can dry-run the job before opening a PR.
Refactor a module and require green act runs matching `test` and `lint` jobs prior to push.
Use act logs as evidence in a self-review checklist that CI-equivalent steps passed locally.
Reproduce a flaky remote CI failure by running the same workflow matrix entry locally in Docker.
How it compares
Skill package that wires act into the repo—not a hosted CI service and not a substitute for fixing workflow design in YAML.
Common Questions / FAQ
Who is local-action-verification for?
Solo and small-team builders using agentic coding tools on GitHub repos who want CI jobs replayed locally with nektos/act.
When should I use local-action-verification?
During Ship before risky pushes; during Build when adding workflows and you want agents to validate jobs; during Operate when debugging CI failures reproducibly on a laptop.
Is local-action-verification safe to install?
It adds shell scripts and AGENTS.md instructions; review the Security Audits panel on this page and inspect `scripts/act/` before running with elevated permissions.
SKILL.md
READMESKILL.md - Local Action Verification
# Local Action Verification A bootstrapper skill that sets up a repository for local GitHub Actions verification using [nektos/act](https://github.com/nektos/act). After setup, Jules can validate CI passes before pushing code. ## What It Does When run, this skill copies scripts and instructions into the target repository: ``` scripts/act/ ├── install-act.sh # Installs act (platform-aware, sudo fallback) └── run-act.sh # Background runner with log polling and timeout ``` It also adds a **Local CI Verification** section to the repo's `AGENTS.md`, which Jules reads to discover and use the scripts during tasks. ## How It Works ```mermaid flowchart TD A["🎯 Jules receives task<br/>(e.g. 'refactor X, verify CI')"] --> B["📖 Read AGENTS.md"] subgraph prereqs ["Step 1: Prerequisites"] B --> C{"Docker running?"} C -- No --> C1["⛔ Stop, tell user"] C -- Yes --> D{"act installed?"} D -- No --> D1["Run scripts/act/install-act.sh"] D1 --> E["✅ Ready"] D -- Yes --> E end subgraph analyze ["Step 2: Analyze Workflows"] E --> F["Read .github/workflows/"] F --> G["Identify job IDs,<br/>matrix configs, secrets"] end subgraph run ["Step 3: Run in Docker"] G --> H["scripts/act/run-act.sh<br/>starts act in background"] H --> I["act spins up Docker container"] I --> J["GitHub Action runs<br/>(build, test, lint)"] J --> K{"Exit code?"} end subgraph heal ["Self-Heal Loop"] K -- "❌ Fail" --> L["Read log output"] L --> M["Diagnose & fix code"] M --> H end K -- "✅ Pass" --> N subgraph cleanup ["Step 4: Cleanup"] N["Remove act_output.log"] --> O["Revert unintended changes"] O --> P["Verify git diff"] end P --> Q["🚀 Ready to push / open PR"] style prereqs fill:#1a1a2e,stroke:#16213e,color:#e0e0e0 style analyze fill:#1a1a2e,stroke:#16213e,color:#e0e0e0 style run fill:#1a1a2e,stroke:#16213e,color:#e0e0e0 style heal fill:#2d1b1b,stroke:#8b0000,color:#e0e0e0 style cleanup fill:#1a1a2e,stroke:#16213e,color:#e0e0e0 ``` ## After Setup Once the skill has set up the repository, Jules can verify CI locally whenever it's given a coding task. The skill itself is no longer needed — everything Jules needs is in the repo. ### Example Flow 1. Jules receives: *"Refactor lib/utils.js and verify CI"* 2. Jules reads `AGENTS.md` → sees "Local CI Verification" instructions 3. Jules runs `bash scripts/act/run-act.sh "push -j test"` 4. CI passes → Jules pushes / opens PR ## Prerequisites - **Docker** — Must be installed and running (preinstalled on Jules VMs) - **act** — Installed automatically by `scripts/act/install-act.sh` ## Limitations - `act` does [not support all GitHub Actions features](https://github.com/nektos/act#known-issues) (e.g., service containers, some caching) - Large Docker images can be slow to pull on first run - Jobs requiring GitHub-specific secrets need a `.secrets` file This is not an officially supported Google product. # Troubleshooting Local Action Verification ## Docker Hub Rate Limits **Symptoms:** `Too Many Requests`, `pull access denied`, or `unauthorized` errors in the log. **Fix:** 1. Set `DOCKER_USERNAME` and `DOCKER_PASSWORD` environment variables. 2. Run: `echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USERNAME" --password-stdin` 3. Re-run the action. ## Image Pull Failures **Symptoms:** `Container not found`, image download hangs, or architecture mismatch errors. The default image `catthehacker/ubuntu:act-latest` is ~20GB. Alternatives: | Image | Size | Best For | |-------|------|----------| | `catthehacker/ubuntu:act-latest` | ~20GB | Full GitHub runner compatibility | | `node:20-bookworm` | ~1GB | Node.js-only workflows | | `node:20-slim` | ~200MB | Minimal Node.js (may miss system deps) | To override, add `-P ubuntu-latest=<image>` to the act arguments: ```bash ./run-act.sh "push