Skip to content
Skillpedia
General coding40k · #5013

autoresearch

Helps your agent autonomously improve code. It experiments with changes, tests, and measures results to optimize performance.

What it does

This tool helps automatically improve any programming code. You tell it what you want to improve (like speed or memory usage) and how to measure it. The tool then tries making changes to the code, tests if they improved the outcome, and keeps only the good ones.

When to use it

  • ✓When you want to make a program run faster.
  • ✓When you want a program to use less memory.
  • ✓When you want to optimize code for a better result in a specific task.

Example of what to ask your AI

“I want to improve the speed of this Python script. The metric is execution time measured with 'time python my_script.py', and lower time is better.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/github/awesome-copilot/blob/main/skills/autoresearch/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/github/awesome-copilot/blob/main/skills/autoresearch/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

First, you define the goal (what to improve) and how to measure it. Then, the tool creates a copy of your code, makes small changes, tests to see if it improved, and decides whether to keep or discard the change.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add github/awesome-copilot --skill autoresearch

Or download just the file:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/autoresearch/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

Autoresearch: Autonomous Iterative Experimentation

An autonomous experimentation loop for any programming task. You define the goal and how to measure it; the agent iterates autonomously -- modifying code, running experiments, measuring results, and keeping or discarding changes -- until interrupted.

This skill is inspired by Karpathy's autoresearch, generalized from ML training to any programming task with a measurable outcome.


Agent Behavior Rules

  1. DO guide the user through the Setup phase interactively before starting the loop.
  2. DO establish a baseline measurement before making any changes.
  3. DO commit every experiment attempt before running it (so it can be reverted cleanly).
  4. DO keep a results log (TSV) tracking every experiment.
  5. DO revert changes that do not improve the metric (git reset to last known good).
  6. DO run autonomously once the loop starts -- never pause to ask "should I continue?".
  7. DO NOT modify files the user marked as out-of-scope.
  8. DO NOT skip the measurement step -- every experiment must be measured.
  9. DO NOT keep changes that regress the metric unless the user explicitly allowed trade-offs.
  10. DO NOT install new dependencies or make environment changes unless the user approved it.

Phase 1: Setup (Interactive)

Before any experimentation begins, work with the user to establish these parameters. Ask the user directly for each item. Do not assume or skip any.

1.1 Define the Goal

Ask the user:

What are you trying to improve or optimize?

Examples: execution time, memory usage, binary size, test pass rate, code coverage, API response latency, throughput, error rate, benchmark score, build time, bundle size, lines of code, cyclomatic complexity, etc.

Record the user's answer as the goal.

1.2 Define the Metric

Ask the user:

How do we measure success? What exact command produces the metric?

I need:

  1. The command to run (e.g., dotnet test, npm run benchmark, time ./build.sh, pytest --tb=short)
  2. How to extract the metric from the output (e.g., a regex pattern, a specific line, a JSON field)
  3. Direction: Is lower better or higher better?

Example: "Run dotnet test --logger trx, count passing tests. Higher is better." Example: "Run hyperfine './my-program', extract mean time. Lower is better."

Record:

  • METRIC_COMMAND: the command to run
  • METRIC_EXTRACTION: how to extract the numeric metric from output
  • METRIC_DIRECTION: lower_is_better or higher_is_better

1.3 Define the Scope

Ask the user:

Which files or directories am I allowed to modify?

And which files are OFF LIMITS (read-only)?

Record:

  • IN_SCOPE_FILES: files/dirs the agent may edit
  • OUT_OF_SCOPE_FILES: files/dirs that must not be modified

1.4 Define Constraints

Ask the user:

Are there any constraints I should respect?

Examples:

  • Time budget per experiment (e.g., "each run should take < 2 minutes")
  • No new dependencies
  • Must keep all existing tests passing
  • Must not change the public API
  • Must maintain backward compatibility
  • VRAM/memory limit
  • Code complexity limits (prefer simpler solutions)

Record as CONSTRAINTS.

1.5 Define the Experiment Budget (Optional)

Ask the user:

How many experiments should I run, or should I just keep going until you stop me?

You can say a number (e.g., "try 20 experiments") or "unlimited" (I'll run until you interrupt).

Record as MAX_EXPERIMENTS (number or unlimited).

1.6 Simplicity Criterion

Inform the user of the default simplicity policy:

Simplicity policy (default): All else being equal, simpler is better. A small improvement that adds ugly complexity is not worth it. Removing code while maintaining or improving the metric is a great outcome. I'll weigh the complexity cost against the improvement magnitude. Does this policy work for you, or do you want to adjust it?

Record any adjustments as SIMPLICITY_POLICY.

1.7 Confirm Setup

Summarize all parameters back to the user in a clear table:

Parameter Value
Goal ...
Metric command ...
Metric extraction ...

…

FAQ

What happens if the tool makes the code worse?

If a change doesn't improve the expected result, the tool discards it and reverts to the previous working version.

Can I tell the tool which parts of the code not to touch?

Yes, you can specify which files or directories are 'out-of-scope', and the tool will not modify them.

Does the tool install new things?

No, the tool will not install new libraries or make environment changes without your explicit approval.

Details

Original description by the author

Autonomous iterative experimentation loop for any programming task. Guides the user through defining goals, measurable metrics, and scope constraints, then runs an autonomous loop of code changes, testing, measuring, and keeping/discarding results. Inspired by Karpathy''s autoresearch. USE FOR: autonomous improvement, iterative optimization, experiment loop, auto research, performance tuning, auto

repo: github/awesome-copilot

Popularity

GitHub stars
40k
Ranking position
#5013
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills