From karpathy-loop
Executes autonomous Loop Engineering cycles (Autoresearch) for continuous code and metric optimization.
How this skill is triggered — by the user, by Claude, or both
Slash command
/karpathy-loop:karpathy-loopThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Implements **Loop Engineering** — the practice of delegating experimentation loops to AI agents that iteratively modify code, run experiments, evaluate metrics, and decide to keep or revert changes. Based on Andrej Karpathy's Autoresearch method.
Implements Loop Engineering — the practice of delegating experimentation loops to AI agents that iteratively modify code, run experiments, evaluate metrics, and decide to keep or revert changes. Based on Andrej Karpathy's Autoresearch method.
Three-file contract:
| File | Role | Agent Editable? |
|---|---|---|
prepare.py | Static experiment setup: data, tokenizer, metric definition | No (immutable baseline) |
train.py (or target) | Model/code under optimization | Yes (agent's playground) |
program.md | Human-written instructions, constraints, and acceptance criteria | No (human edits only) |
Each iteration: agent reads program.md → forms hypothesis → edits target code → runs timed experiment (default 5 min) → evaluates metric → commits if improved, reverts if regressed.
Two-layer cache inspired by the AI Engineering Guidebook:
Layer 1 — Cold Cache (CAG / KV Cache) Stable, rarely-changing context cached directly in KV memory:
program.md instructionsAvoids recomputing the same static information on every iteration. Uses Paged Attention to prevent GPU memory fragmentation.
Layer 2 — Hot Cache (Prompt Cache) Dynamic per-iteration state via OpenAI/Anthropic prompt caching:
Cold + hot separation keeps cache size bounded while maximizing reuse. See /getCacheStatus endpoint for current cache utilization.
POST /runLoopStart an autonomous optimization loop.
{
"program_file": "./program.md",
"target_file": "./train.py",
"evaluation_script": "./prepare.py",
"metric_name": "val_bpb",
"max_iterations": 100,
"timeout_seconds": 300,
"cache_strategy": "prompt_cache"
}
Response:
{
"status": "success",
"data": {
"loop_id": "loop_a1b2c3d4",
"status": "running",
"started_at": "2026-07-09T20:00:00Z"
}
}
GET /getResultsRetrieve loop progress and history.
{
"loop_id": "loop_a1b2c3d4"
}
Response:
{
"loop_id": "loop_a1b2c3d4",
"status": "running",
"current_iteration": 42,
"best_metric": {
"name": "val_bpb",
"value": 1.1023,
"improvement_pct": 12.4
},
"total_improvements": 5,
"iterations": [
{
"number": 38,
"hypothesis": "Increase depth from 8 to 12",
"metric_value": 1.1023,
"accepted": true,
"duration_seconds": 298
}
],
"cache_hits": 38,
"cache_savings_ms": 15200
}
POST /runExperimentRun a single isolated experiment without commit.
{
"target_file": "./train.py",
"dry_run": false,
"use_cache": true
}
Response:
{
"execution_time_seconds": 298,
"metric": { "name": "val_bpb", "value": 1.2345 },
"logs": "Epoch 1 loss: 2.1... val_bpb final: 1.2345",
"cached": true
}
GET /getCacheStatusInspect cache state across layers.
Response:
{
"prompt_cache": { "active_entries": 3, "hits": 38, "misses": 4, "savings_ms": 15200 },
"kv_cache": { "active_entries": 2, "memory_usage_mb": 128, "fragmentation_pct": 3.2 },
"cold_storage": { "cached_files": ["program.md", "baseline.json"], "size_bytes": 24576 }
}
POST /revertLastRevert the last accepted change.
{ "loop_id": "loop_a1b2c3d4" }
Response:
{
"status": "success",
"reverted_iteration": 38,
"previous_metric": { "name": "val_bpb", "value": 1.1500 }
}
| Permission | Purpose |
|---|---|
gpu_access | Run ML experiments (PyTorch) within strict time windows |
llm_api_access | Agent generates hypotheses and code edits via LLM APIs |
file_storage_read_write | Read/write target files, logs, and progress artifacts |
network_access | Download datasets, sync results, call LLM APIs |
git_operations | Commit accepted changes, revert regressions, track history |
lemon-cli plugin audit karpathy-loop — verify all 5 permissions requestedtrain.py that prints val_bpb: 1.50 → /runExperiment → verify metric extractionprogram.md targeting metric reduction → /runLoop with max_iterations: 3 → verify autonomous cycle/getCacheStatus pre/post loop — verify prompt cache hits increase with shared prefixes/getResults during loop + /revertLast — verify iteration tracking and git revertGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Synthesizes the current conversation into a structured spec (PRD) and publishes it to the project issue tracker with a ready-for-agent label, without interviewing the user.
npx claudepluginhub andersonlimahw/lemon-ai-hub --plugin karpathy-loop