Agent skill

Preloop

by preloopdev in preloopdev/preloop

Run and debug Preloop local CI — GitHub Actions-compatible workflows executed in one isolated microVM per job (smolvm/libkrun).

MITAuto-check passedDevOps & Cloud

Install Preloop

skills CLI
$ npx skills add preloopdev/preloop --skill preloop -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install preloopdev/preloop preloop --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/preloopdev/preloop.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/preloop .claude/skills/preloop && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
preloop
GitHub stars
175
Token cost
~2.2k tokens
SKILL.md length
691 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Run and debug Preloop local CI — GitHub Actions-compatible workflows executed in one isolated microVM per job (smolvm/libkrun).

  • The user asks to run
  • SKILL.md covers Non-negotiables (trust model), Agent core loop, Command reference (current CLI) and Environment, plus 3 more sections
  • Calls just; needs AKSH_TOKEN
  • Plan a workflow locally

What it does

Preloop is an agent skill from preloopdev/preloop. Run and debug Preloop local CI — GitHub Actions-compatible workflows executed in one isolated microVM per job (smolvm/libkrun). Use when the user asks to run or plan a workflow locally, submit CI, debug a failed job, retry a failed step in its live VM, open a shell in a preserved VM, manage the local runner pool or GitHub credentials, or work with the preloop CLI, preloopd, or the aksh control plane. Triggers: "preloop run", "run CI locally", "run this workflow", "CI failed", "debug the failure", "retry the…

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in DevOps & Cloud, covering Autonomous loops and CI/CD. It works with GitHub Actions and GitHub. The repository describes itself as: agent-native, drop-in Github Actions that run locally or self-hosted in microvms, with debug/pause-on-failure and step-level retries. The licence is MIT.

When your agent uses it

  • The user asks to run
  • Plan a workflow locally
  • Debug a failed job
  • Retry a failed step in its live VM

Example prompts

  • “preloop run”
  • “run CI locally”
  • “run this workflow”
  • “/preloop”

Requirements

  • Docker
  • A credential in AKSH_TOKEN

What it can do on your machine

Read from SKILL.md and the folder at commit 992e3b8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • just

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • AKSH_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Preloop loads about 2.2k tokens when it runs. Until then it costs about 140 tokens; SKILL.md has 691 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~140
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from preloopdev/preloop at commit 992e3b8, republished under its MIT licence (© preloopdev). 691 words, ~2,186 tokens.

Download SKILL.mdSave it as .claude/skills/preloop/SKILL.md (or your agent's skills folder).
name
preloop
description
Run and debug Preloop local CI — GitHub Actions-compatible workflows executed in one isolated microVM per job (smolvm/libkrun). Use when the user asks to run or plan a workflow locally, submit CI, debug a failed job, retry a failed step in its live VM, open a shell in a preserved VM, manage the local runner pool or GitHub credentials, or work with the preloop CLI, preloopd, or the aksh control plane. Triggers: "preloop run", "run CI locally", "run this workflow", "CI failed", "debug the failure", "retry the step", "agent loop", "smolvm runner".

Preloop

Preloop is a macOS-first local/self-hosted/managed CI platform. It reimplements the GitHub Actions control plane (aksh) and a faithful Rust runner, and executes each job in an isolated Linux microVM via smolvm (libkrun) on Apple Silicon, with Firecracker as the scale-tier executor. Workflows are drop-in GitHub Actions YAML; the unmodified official runner also works against aksh.

Source of truth for this skill: the CLI at crates/preloop-cli/src/main.rs (current subcommands only — docs under preloop/docs/ are partly aspirational; verify a command exists before using it).

Non-negotiables (trust model)

  • One isolated microVM per job. No host Docker socket as a core dependency.
  • No real secrets in untrusted jobs by default. Secrets are reference-based: preloop secret list returns names only, never values.
  • No silent fidelity gaps. Unsupported workflow behavior must be explicit and machine-readable, never silently approximated.
  • Dirty retry is not a clean verdict. After fixing a failure in a live VM, the final "fixed" call requires a clean run from a fresh VM/overlay with strict policy.

Agent core loop

text
preloop run -f <workflow>        # run; on failure a TTY run pauses the VM
preloop debug --json             # read the paused session as JSON (agents/scripts)
<edit source on the host>
preloop debug --verdict retry --sync --from <step>
                                 # sync host edits into the VM, re-run from that step
preloop debug --verdict continue # keep going from the paused step
preloop debug --verdict abort    # tear down, mark failed

Interactive preloop run pauses at a failed step and holds the microVM open so you can fix and retry from that step. Non-interactive runs (--detach, piped stdout, CI) never pause; pass --preserve-on-failure to keep the failed VM alive for a later preloop shell.

Command reference (current CLI)

Run workflows
text
preloop run [-f <path>] [--job <id>] [--event <trigger>] [--payload <file.json>]
            [--base <ref>] [--secret NAME=VALUE] [-d|--detach] [--no-debug]
            [--preserve-on-failure]
  • -f — workflow file. A bare filename like ci.yml resolves inside .github/workflows/; a path is used as-is. When omitted, discovers workflows whose triggers match the current repo state/event.
  • --job — single job by its YAML key; includes the needs: dependency closure.
  • --event — simulate a trigger (push, pull_request, merge_group, …); --payload supplies a webhook body JSON; --base sets the base ref for pull_request/merge_group.
  • --detach — submit and return without streaming events.
  • --no-debug — tear down on failure instead of pausing (default when detached).
Inspect and control
text
preloop plan        # expanded job DAG + matrix, no execution
preloop status      # active and recent runs
preloop logs        # run logs
preloop cancel      # cancel current run
Debug a failed job
text
preloop shell [session-id|run-id|job-name]        # PTY into the preserved VM
preloop debug [session] --json                    # session as JSON, exit (agents)
preloop debug [session] --verdict retry [--sync] [--force]
              [--from <step>|--from-start] [--revert none|untracked|all]
preloop debug [session] --verdict continue|abort
preloop debug [session] --export [--patch-only]   # pull VM-side edits back to host
  • --sync — copy host source changes into the VM before retrying. A file changed on both sides aborts unless --force.
  • --from <step> — re-run from a 1-based step number or display name (must be at or before the failed step); --from-start re-runs from the first user step.
  • --revert — undo the failed attempt's workspace debris: none (default), untracked, or all.
  • --export — bring edits made inside the VM back to the host workspace.
Secrets and GitHub credentials
text
preloop secret set <NAME> [--value V | stdin] [--repo owner/repo]
preloop secret list [--repo owner/repo]           # names only, never values
preloop secret rm <NAME> [--repo owner/repo]
preloop setup github                              # GitHub App or fine-grained PAT
preloop doctor                                    # verify credential config
Serve and update
text
preloop serve [--listen ADDR] [--public-url URL] [--github-app-id ID]
              [--github-app-key PATH] [--github-app-installation-id ID]
              [--webhook-secret SECRET] [--save]
preloop update   # poll GitHub Releases, atomically install matching binary

serve is the self-hosting entry point: control plane + microVM runner pool in the foreground, serving the GitHub webhook and Checks endpoints. --public-url must be the URL GitHub and remote runners can actually reach. Hidden alias: engine.

Show full SKILL.md (281 more words)Show less

Environment

VariableMeaning
AKSH_URLserver base URL; default http://127.0.0.1:9090
AKSH_TOKENAPI token for the server
PRELOOP_HOMEstate dir; default ~/.preloop
PRELOOP_LISTEN / PRELOOP_PUBLIC_URLoverride serve --listen / --public-url
PRELOOP_RUNNER_LABELScomma-separated extra runs-on labels (e.g. declare X64 on an ARM host)
PRELOOP_RUNNER_POOL_SIZEoverride warm runner pool size (memory-bounded, cap 8)
PRELOOP_RUNNER_STORAGE_GBpersistent guest storage per runner; use 80 or more for full hosted-image OCI snapshots
PRELOOP_RUNNER_PACK_PROXY / PRELOOP_RUNNER_PACK_NO_PROXYproxy and bypass list for smolvm's registry export VM during golden packing
PRELOOP_RUNNER_BASE_IMAGE / PRELOOP_RUNNER_BUNDLE / PRELOOP_RUNNER_DNS / PRELOOP_RUNNER_OVERLAY_GB / PRELOOP_RUNNER_NAME_PREFIX / PRELOOP_RUNNER_POOL_ENABLED / PRELOOP_USE_FORK / PRELOOP_USE_PACKED_GOLDEN / PRELOOP_WORKSPACErunner pool / VM tuning knobs (full semantics in crates/preloop-cli/src/main.rs)

Runner execution defaults: packed goldens enabled, warm pool disabled, one single-use VM provisioned per queued job, and concurrency capped by host CPU. Each VM receives 4 vCPUs and a 4096 MiB ballooned memory ceiling. Set PRELOOP_RUNNER_POOL_ENABLED=true to keep warm runners (size is memory-bounded, cap 8), or PRELOOP_USE_PACKED_GOLDEN=false to force cold OCI provisioning.

Failure classification (from preloop/docs/09_agent_loop_retry_and_fork.md)

Classify failures before retrying — do not burn loops on the wrong fix:

ClassificationSuggested action
test_failure / compile_failureedit source, retry step
missing_secretrequest/update policy, don't hack around it
network_blockedinspect the egress allowlist/policy
cache_misscontinue, or warm the cache
resource_oom / disk_quotaraise resources or fix the test
timeoutoptimize or raise the timeout
infra_failureretry job or report a bug
fidelity_unsupportedunsupported workflow feature — record the gap, don't fake it

Developing Preloop itself (this repo)

sh
just build-preloop           # macOS CLI + ARM64 Linux runner (zigbuild)
just preloop-run WF=fixtures/workflows/failing.yml   # run, pause on failure
just preloop-run-detached WF=...                     # submit, keep VM preserved
just preloop-shell           # shell into the most recent preserved VM
just serve / serve-dev       # aksh control plane on 127.0.0.1:9090
just test-ci                 # fmt-check + clippy + tests (the full gate)
just dogfood                 # E2E with the real official runner
just conform / conform-server-deep   # protocol conformance gates

Key paths: crates/preloop-cli/src/main.rs (CLI), crates/preloop-orchestrator/, crates/preloop-vm/ (smolvm provider), preloop/docs/00_index.md (design docs), fixtures/workflows/ (sample workflows), goals/ (agent CI benchmarks).

Verification rule

Never report "fixed" on a dirty retry alone. The final verdict must come from a clean run: fresh VM, clean overlay, strict network/secrets/cache policy. The repo gate is just test-ci plus just conform for protocol fidelity.

© preloopdev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/preloop of preloopdev/preloop.

Open the folder on GitHubat commit 992e3b8

Compare with similar skills

Preloop next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Preloop compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Preloop this skillpreloopdev/preloop175—~2.2kAutomated safety check: PassMIT
Create Repo Agentlangfuse/langfuse35k—~730Automated safety check: PassCustom licence
Nushellccusage/ccusage19k—~938Automated safety check: PassCustom licence
AI News RadarLearnPrompt/ai-news-radar1.8k—~2.5kAutomated safety check: NotesMIT
Make GitHub Actions Workflowdotnet/efcore15k—~1.7kAutomated safety check: PassMIT
ONNX Runtime CI Managementmicrosoft/onnxruntime22k—~4.1kAutomated safety check: PassMIT

Similar skills

  • Create Repo Agent

    langfuse/langfuse

    Design, implement, review, or harden Langfuse repo-owned autonomous agents.

    35k GitHub stars~730 tokensUpdated today
    DevOps & CloudAuto-check passed
  • Nushell

    ccusage/ccusage

    Guides ccusage Nushell scripts. An agent skill from ccusage/ccusage.

    19k GitHub stars~938 tokensUpdated today
    DevOps & CloudAuto-check passed
  • AI News Radar

    LearnPrompt/ai-news-radar

    A skill your agent uses when working on AI News Radar, 24 小时 AI 更新雷达, AI 更新雷达, 伯乐Skill, or Scout Skill: finding high-signal AI/tech sources, adding RSS/OPML/GitHub feeds, checking source health…

    1.8k GitHub stars~2.5k tokensUpdated yesterday
    DevOps & CloudAuto-check: notes
  • Official

    Create GitHub Actions workflows for CI, automation, or PR management.

    15k GitHub stars~1.7k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • ONNX Runtime CI Management

    microsoft/onnxruntime

    Official

    Triggers, re-runs and unblocks the CI checks on an ONNX Runtime pull request, after diagnosing whether a failure is transient or needs a code change.

    22k GitHub stars~4.1k tokensUpdated today
    DevOps & CloudAuto-check passed
  • CI Watchdog

    latitude-dev/latitude-llm

    Continuously monitor GitHub PR CI checks and automatically fix failures until all checks pass.

    4.7k GitHub stars~1.6k tokensUpdated yesterday
    DevOps & CloudAuto-check passed

Categories

Questions about Preloop

What does Preloop do?

Run and debug Preloop local CI — GitHub Actions-compatible workflows executed in one isolated microVM per job (smolvm/libkrun). Preloop is an agent skill from preloopdev/preloop. Run and debug Preloop local CI — GitHub Actions-compatible workflows executed in one isolated microVM per job (smolvm/libkrun).

When should I use Preloop?

Preloop fits situations like: the user asks to run; plan a workflow locally; debug a failed job; retry a failed step in its live VM.

How do I install Preloop in Claude Code?

Run `npx skills add preloopdev/preloop --skill preloop -a claude-code`. Or copy the skill folder (skills/preloop in preloopdev/preloop) into .claude/skills/preloop in your project. Claude Code loads it when a task matches its description.

How do I install Preloop in Codex?

Run `npx skills add preloopdev/preloop --skill preloop -a codex`. Or copy the skill folder (skills/preloop in preloopdev/preloop) into .agents/skills/preloop in your project. Codex loads it when a task matches its description.

Can I use Preloop in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add preloopdev/preloop --skill preloop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/preloop, .gemini/skills/preloop, .github/skills/preloop and .opencode/skills/preloop in your project.

What does Preloop need to run?

Going by SKILL.md and its folder, Preloop needs the command-line tools its instructions call (just) and credentials named AKSH_TOKEN. Our summary lists: Docker; A credential in AKSH_TOKEN.

Does Preloop access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Preloop safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Preloop use?

Preloop is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Preloop use?

About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Preloop?

Skills that share tags, products or a category with Preloop: Create Repo Agent (langfuse/langfuse, 35k stars), Nushell (ccusage/ccusage, 19k stars), AI News Radar (LearnPrompt/ai-news-radar, 1.8k stars) and Make GitHub Actions Workflow (dotnet/efcore, 15k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Preloop?

preloopdev (a GitHub organization) maintains it in preloopdev/preloop, which has 175 GitHub stars. The repository was last updated on October 7, 2026.

Source: preloopdev/preloop on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.