
autoresearch
Run Karpathy-style autonomous ML search on a real training repo: choose the right mode (setup, program.md, bounded loop, results interpretation, or constrained-hardware adaptation), preserve the immutable prepare.py / 300-second / valbpb contract, and route prompt/skill eval work away to LangSmith, Promptfoo, Braintrust, or skill-autoresearch.
- Installs
- 347
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/akillness/jeo-skills --skill autoresearch- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads autoresearch automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
autoresearch
Autoresearch is a closed-loop ML experimentation workflow:
- human writes
program.md - agent edits
train.py prepare.pystays fixed- every run gets the same 300-second budget
- lower
val_bpbwins - regressions get reverted
This skill should behave like a routing-first front door, not a giant tutorial. Pick the user's mode, enforce the immutable-harness rules, then hand them to the smallest useful script or reference.
When to use this skill
- Set up
karpathy/autoresearchon a real GPU machine - Write or refine
program.mdbefore a session - Run a bounded overnight
train.pysearch loop - Interpret
results.tsvafter a session - Adapt the workflow to tighter VRAM constraints without invalidating comparisons
- Explain the ML-specific boundary between
autoresearchand nearby eval tooling
Do not use this skill when
- The user wants to optimize a
SKILL.md, prompt, or repo-local workflow with frozen prompts/evals — useskill-autoresearch - The user wants app-level tracing, dataset-backed LLM evals, feedback review, or observability — use LangSmith, Braintrust, Weave, Promptfoo, or similar tools
- The job does not involve a real training repo,
program.md,train.py, fixed runtime budget, andval_bpbkeep/revert ratcheting - The user is really asking for a paper survey, general benchmark scan, or literature review with no intention to run the training loop
Core boundary
| Concern | autoresearch owns | Route elsewhere |
|---|---|---|
| Mutable target | train.py in a real training repo | prompts, app configs, SKILL.md, product behavior |
| Fixed evaluator | prepare.py, validation shard, TIME_BUDGET=300, chosen MAX_SEQ_LEN / EVAL_TOKENS for the session | prompt/eval datasets, app scorecards, observability dashboards |
| Acceptance rule | keep only lower val_bpb; revert ties/regressions | human review queues, app-level release gates |
| Main artifacts | program.md, results.tsv, kept/discarded commits | prompt suites, traces, feedback datasets |
If that boundary does not fit, do not stretch this skill.
Required intake packet
Before acting, identify:
- Mode — setup,
program.md, run loop, results interpretation, or constrained hardware - Repository state — cloned or not, dependencies installed or not
- Hardware state — GPU / VRAM / CUDA / MLX / Windows path
- Session state — first baseline, active loop, or completed run
- Constraint state — target VRAM ceiling, whether
prepare.pyhas already been frozen for this session
Instructions
Step 1: Pick exactly one operating mode
Choose the smallest mode that answers the request:
-
Setup readiness
- install
uv - clone repo
- sync dependencies
- verify GPU/CUDA/uv with
scripts/check-hardware.sh - run the first baseline experiment
- install
-
program.mdauthoring- write or refine the human research charter
- record current baseline
val_bpb - prioritize hypotheses
- list what has already been tried
- freeze constraints before the loop starts
-
Bounded run loop
- confirm the evaluator is already fixed
- use
train.pyas the only mutable search surface - run the loop with keep/revert discipline
- log every experiment to
results.tsv
-
Results interpretation
- summarize best kept runs
- identify repeated failures or crash patterns
- extract what belongs in the next
program.md - distinguish genuine gains from one-off anomalies
-
Constrained-hardware adaptation
- set
MAX_SEQ_LENandEVAL_TOKENSbefore the session - keep them unchanged once the session starts
- adjust model/search strategy instead of cheating the evaluator mid-run
- route to community forks when CUDA assumptions do not hold
- set
Do not answer all five modes at once unless the user explicitly asked for a full end-to-end walkthrough.
Step 2: Re-state the immutable harness
Every mode must preserve these rules:
program.mdis human-authored and read-only during a sessiontrain.pyis the main mutable search surfaceprepare.pyis read-only once the session startsTIME_BUDGET=300stays fixedval_bpbis the main keep/revert metricresults.tsvis append-only- dependency set in
pyproject.tomlstays locked
If the user wants to change the evaluator, start a new comparison track, not the current session.
Step 3: Execute the chosen mode
Mode A — Setup readiness
Use this path when the repo is not yet runnable.
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/karpathy/autoresearch
cd autoresearch
uv sync
bash scripts/check-hardware.sh
uv run prepare.py
uv run train.py > run.log 2>&1
grep "^val_bpb:\|^peak_vram_mb:" run.log
Success condition: one baseline run completes and prints both val_bpb and peak_vram_mb.
Mode B — program.md authoring
Use this path when the loop exists but direction is weak.
Minimum sections:
- goal tied to lower
val_bpb - current baseline
val_bpb - directions to explore in priority order
- what has been tried already
- constraints:
TIME_BUDGET=300, noprepare.pymutation, no new packages, VRAM ceiling, one meaningful change per experiment
For fuller templates and update patterns, use references/program-md-guide.md.
Mode C — Bounded run loop
Use this path only after setup and program.md are ready.
Loop contract:
- read
program.md+ currenttrain.py - form one hypothesis
- edit
train.py - commit
- run one 300-second experiment
- extract
val_bpb - keep if improved, otherwise
git reset HEAD~1 - append result to
results.tsv
Typical commands:
bash scripts/run-experiment.sh
bash scripts/run-loop.sh --max 20 --desc "session-1"
Do not encourage multi-change hero rewrites. Clean ablations matter more than flashy edits.
Mode D — Results interpretation
Use this path after a completed run or checkpoint.
Helpful commands:
bash scripts/show-results.sh --top 10
awk -F'\t' '$4=="keep"' results.tsv | sort -t$'\t' -k2 -n
awk -F'\t' '{print $4}' results.tsv | sort | uniq -c
Summarize only four things: best gains, repeated failures, what should move into What Has Been Tried, and the next narrow experiment family.
Mode E — Constrained-hardware adaptation
Use this path when VRAM, platform, or runtime constraints dominate.
Rules:
- choose
MAX_SEQ_LENandEVAL_TOKENSbefore the session - never change them mid-session
- lower model/search ambition before mutating the evaluator
- prefer route-outs to community forks for Apple Silicon / non-CUDA paths
For concrete values and troubleshooting, use references/hardware-config.md.
Step 4: Route out aggressively when the request is adjacent
Route out when:
- the user wants to optimize instructions, prompts, or repo-local skills →
skill-autoresearch - the user wants app-level traces, feedback review, observability, or online/offline eval dashboards → LangSmith / Braintrust / Weave / Promptfoo
- the user wants general literature synthesis rather than a runnable ML loop → research or survey tooling
Step 5: Keep the heavy detail in support files
Use support files instead of re-explaining everything inline:
references/operating-modes-and-route-outs.md— fast routing table, minimal response shape, and handoff logicreferences/architecture.md— immutability contract, file map, metric rationalereferences/program-md-guide.md— templates and update rulesreferences/hardware-config.md— VRAM tables and platform troubleshootingscripts/*.sh— runnable setup / loop / reporting helpers
Available scripts
Run from inside the autoresearch repository directory:
| Script | Purpose | Usage |
|---|---|---|
setup.sh | One-time environment setup | bash scripts/setup.sh [--seq-len 512] |
run-experiment.sh | Single 5-minute experiment + metric extraction | bash scripts/run-experiment.sh |
run-loop.sh | Autonomous loop: run → keep/revert → repeat | bash scripts/run-loop.sh [--max 20] |
show-results.sh | Human-readable results.tsv report | bash scripts/show-results.sh [--top 10] |
check-hardware.sh | GPU/CUDA/uv readiness check (JSON output) | bash scripts/check-hardware.sh |
References
Detailed documentation in references/:
| File | Contents |
|---|---|
references/operating-modes-and-route-outs.md | Mode picker, adjacency boundaries, and minimal output contract |
references/architecture.md | System design, immutability contract, git ratcheting, metric rationale |
references/program-md-guide.md | How to write and update effective program.md directives |
references/hardware-config.md | VRAM settings by GPU, memory optimization, platform troubleshooting |
Examples
Example 1: First 40GB GPU session
Request: “Help me run Karpathy autoresearch on a 40GB GPU.”
Expected behavior:
- choose Setup readiness first
- verify hardware and dependencies
- run one baseline experiment
- route to
program.mdauthoring only after the baseline exists
Example 2: User wants to optimize a skill instead
Request: “Can autoresearch help me improve this SKILL.md with binary evals?”
Expected behavior:
- route out immediately to
skill-autoresearch - explain that this skill is for real ML training search on
train.py
Best practices
- Start with the smallest mode that fits — setup, authoring, run loop, interpretation, or hardware adaptation
- Baseline before bravado — confirm one successful run before talking about overnight loops
- Freeze the evaluator before the session —
prepare.py,TIME_BUDGET,MAX_SEQ_LEN, andEVAL_TOKENSmust stay comparable - One meaningful experiment at a time — ablations beat mystery bundles
- Keep
results.tsvappend-only — discarded runs are still evidence - Push deep detail into references/scripts — the front door should classify and route, not duplicate every table
- Route adjacent jobs away early — prompt/app eval and
SKILL.mdoptimization are different lanes
References
FAQ
What does the autoresearch skill do?
Run Karpathy-style autonomous ML search on a real training repo: choose the right mode (setup, program.md, bounded loop, results interpretation, or constrained-hardware adaptation), preserve the immutable prepare.py / 300-second / valbpb contract, and route prompt/skill eval work away to LangSmith, Promptfoo, Braintrust, or skill-autoresearch.
How do I install autoresearch?
Run npx skills add https://github.com/akillness/jeo-skills --skill autoresearch in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/autoresearch/ (personal) or .claude/skills/autoresearch/ (project).
Which AI agents can use autoresearch?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is autoresearch safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains autoresearch?
It is published by akillness in akillness/jeo-skills. It has 347 recorded installs.
More from akillness/jeo-skills
rtk
akillness/jeo-skills
Install, initialize, verify, and troubleshoot RTK (Rust Token Killer) for AI coding agents. Use when you need to reduce shell-command token output, confirm that the correct rtk binary is installed, choose between Homebrew, install.sh, or Cargo installation, wire rtk init for Claude Code, Codex, Gemini CLI, Cursor, Copilot, Windsurf, Cline, or OpenCode, or use compact wrappers such as rtk git status, rtk read, rtk grep, rtk test, rtk lint, and rtk gain. Triggers on: rtk, rust token killer, token saver cli, rtk init, rtk gain, codex rtk, gemini rtk, opencode rtk, claude hook token reduction.
graphify
akillness/jeo-skills
Drive Graphify from its CLI to build, refresh, query, export, and serve a durable code/corpus knowledge graph. Use when the user wants .graphify/GRAPHREPORT.md, graph.json, graph.html, graphify update/summary/query/path/explain/tree, change-aware review context, git-hook or watch-based refresh, a stdio MCP graph server, or an install into jeo, jeopi, gjc, opencode, Claude, Codex, or Gemini. Also covers the honest structural fallback when native extraction is empty or misleading. Route simple locate/reference work to codebase-search, narrative knowledge-base work to llm-wiki, and project-memory handoff to opencontext. Triggers on: graphify, graphify update, graphify query, knowledge graph CLI, GRAPHREPORT.md, graph.json, codebase graph, graph refresh, graphify install, graphify serve, review context, affected flows.
data-analysis
akillness/jeo-skills
Analyze datasets to extract insights, identify patterns, and generate reports.
code-refactoring
akillness/jeo-skills
Turn a cleanup packet into one behavior-preserving refactor brief. Use when simplifying a messy function/component/service, freezing behavior before touching fragile legacy code, splitting a cleanup-heavy diff into reviewable slices, or planning a repeated migration / codemod without changing intended behavior. Route diagnosis to debugging, review judgment to code-review, validation-program design to testing-strategies, bottleneck-led tuning to performance-optimization, and pure symbol inventory to codebase-search.
technical-writing
akillness/jeo-skills
Write internal technical documentation for engineers and operators: technical specs, architecture docs, ADRs, runbooks, migration plans, and developer-facing implementation guides. Use when the main job is capturing a technical decision, system boundary, operating procedure, or rollout path for builders and maintainers. Triggers on: tech spec, design doc, architecture doc, ADR, runbook, migration guide, implementation guide, rollout doc, operational guide, and internal technical writing. End-user onboarding guides, tutorials, FAQs, and help-center flows belong here too. Route API portals to api-documentation, release notes to changelog-maintenance, decks to presentation-builder, and GTM messaging to marketing-automation.
web-accessibility
akillness/jeo-skills
Routing-first skill for web accessibility remediation and verification. Use when the main job is classifying which accessibility surface is failing — semantics, keyboard/focus, labels/announcements, visual perception/reflow, media alternatives, or routed-app navigation feedback — and turning vague audit, WCAG, axe/Lighthouse, or "make this accessible" requests into one concrete remediation packet. Broad UI critique for hierarchy, polish, and launch readiness belongs here too. Route component API architecture and system governance to design-system, and responsive layout strategy to responsive-design.
Popular ai & agents skills
google-agents-cli-publish
google/agents-cli
This skill should be used when the user wants to "publish an agent", "publish my ADK agent", "register an agent with Gemini", "publish to Gemini" (formerly Gemini Enterprise), or needs guidance on the agents-cli publish gemini command. Also use when the user wants to "manage agents in Agent Registry", "list/update/delete registered agents", or "register an MCP server". Covers ADK vs A2A registration modes, programmatic and interactive usage, flag reference, auto-detection from deployment metadata, Agent Registry fleet management, and troubleshooting. Part of the agents-cli skills suite. Do NOT use for deployment (use google-agents-cli-deploy).
google-agents-cli-eval
google/agents-cli
This skill should be used when the user wants to "run an evaluation", "evaluate my agent", "evaluate my ADK agent", "write an eval dataset", "analyze eval failures", "compare eval results", "optimize agent", or needs guidance on the Gemini platform eval methodology and the Quality Flywheel. Covers eval metrics, dataset schema, LLM-as-judge scoring, and common failure causes. Applies to any agents-cli project, whatever framework the agent is written in. Do NOT use for agent API code patterns (ADK: use google-agents-cli-adk-code), deployment (use google-agents-cli-deploy), or project scaffolding (use google-agents-cli-scaffold).
skill-creator
anthropics/skills
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
codex-pet
prime-skills/runcomfy-agent-skills
Codex Pet generator on RunComfy. Build a Codex-compatible Codex Pet spritesheet.webp + pet.json from a single reference image, drop it into ${CODEXHOME:-$HOME/.codex}/pets/ / and Codex picks it up as a custom Codex Pet next to the 8 built-ins. This skill produces the exact Codex Pet atlas Codex expects (1536x1872 PNG/WebP, 8 cols x 9 rows, 192x208 cells, 9 animation states — idle, running-right, running-left, waving, jumping, failed, waiting, running, review). Calls OpenAI GPT Image 2 edit ONCE via the local RunComfy CLI as runcomfy run openai/gpt-image-2/edit to produce a canonical Codex Pet pose, then assembles all 9 animation rows programmatically with ImageMagick micro-transforms — no Codex Pro, no $imagegen, no OPENAIAPIKEY required, only RUNCOMFYTOKEN. Triggers on "codex pet", "create codex pet", "make codex pet", "hatch codex pet", "/hatch image", "desktop pet codex", "codex pets", "spritesheet.webp", or any explicit ask to build a custom pet for OpenAI Codex.
full-output-enforcement
leonxlnx/taste-skill
Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.
executing-plans
obra/superpowers
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available