Autoresearch

SkillMonitoring & ops

Autonomous iteration toward a measurable outcome. Use when the user wants to optimize a numeric metric through repeated modify-verify cycles, reduce bundle size, increase test coverage, improve query time, lower readability score. Not for exploratory research, subjective judgment, or tasks without a verification command.

Then ask your AI: use the Autoresearch skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add it as a step in a pipeline you build on Ahel, or connect Ahel to Claude, ChatGPT, Cursor, Claude Code or Codex and ask your AI to use it.

What this skill tells your AI

The instructions your AI receives, as published by xoai/sage in skills/autoresearch/SKILL.md and read by Ahel’s review.

Autonomous iteration toward a measurable outcome. The agent modifies code, commits, runs a verify command, keeps improvements, reverts regressions — repeating until a target is hit, a budget is exhausted, or the user interrupts.

Core principles (from Karpathy's autoresearch pattern):

  1. One change per iteration
  2. Commit before verify
  3. Metrics must be mechanical (deterministic, fast, parseable)
  4. Keep improvements, revert regressions — no exceptions
  5. The branch is sacred — never touch main
  6. State survives crashes — resume from last known good
  7. Memory spans sessions — what worked/failed carries forward

When to Use

  • Task has a measurable numeric metric (size, time, count, score, coverage)
  • A verify command exists that outputs the metric deterministically
  • "Better" means the number going consistently in one direction
  • The agent can make changes autonomously within a defined scope

When NOT to Use

  • Subjective goals ("make the UI prettier")
  • No verify command available
  • Metric requires manual evaluation
  • Task needs human judgment per iteration
  • Exploratory research without a target

Elicitation Checklist

Before the loop can start, capture these (skip if already provided):

FieldRequiredExample
GoalYes"Reduce bundle below 200KB"
Metric nameYesbundle_kb
DirectionYeslower or higher
TargetOptional200
Verify commandYespnpm build && measure.sh
Writable scopeRecommendedsrc/**/*.ts
Frozen scopeRecommendedpackage.json, *.lock
Per-run budgetYes (default 120s)120 seconds
Max iterationsOptional100
TerminationAutotarget if target given, else interrupt

Present as a brief for user approval:

Sage: Autoresearch session configured.

  Goal: [goal statement]
  Metric: [name] ([direction]), target: [target or "none — runs until interrupted"]
  Verify: [command]
  Scope: writable [globs], frozen [globs]
  Budget: [seconds]s per run, [max iterations or "unlimited"]

[A] Start — begin autonomous iteration
[R] Revise — change configuration

The 8-Phase Loop

Each iteration follows 8 phases. Read references/loop-protocol.md for per-phase detail.

#PhaseActorWhat happens
1REVIEWagentRead current state, recent history (last 20 iterations from JSONL)
2IDEATEagentPropose ONE change, ≤1 sentence. If stuck, load references/stuck-recovery.md
3MODIFYagentMake the change. Stay within writable scope.
4COMMITruntimegit add -A && git commit on autoresearch/<slug> branch
5VERIFYruntimeRun verify command with wall-clock budget
6DECIDEruntimeParse METRIC, compare to best → keep / discard / crash
7LOGruntime+agentAppend JSONL, rebuild TSV, agent updates living doc
8REPEATruntimeCheck termination → loop or exit

Decision rules (Phase 6):

  • Exit code ≠ 0 → crash, reset to HEAD
  • No METRIC line → crash, reset
  • nan/inf → crash, reset
  • Metric improved → keep, advance branch
  • Metric equal or worse → discard, reset

Runtime Integration

An optional Python runtime handles the deterministic phases (COMMIT, VERIFY, DECIDE, LOG, REPEAT); the agent handles the creative phases (REVIEW, IDEATE, MODIFY). The runtime was extracted from core into its own package in Phase 3 (like sage-memory) — install it with sage add xoai/sage-autoresearch.

Running the runtime — probe first, and degrade LOUDLY if it is absent (announce + log to decisions.md; never silently skip):

if python3 -c 'import autoresearch' 2>/dev/null; then
  python3 -m autoresearch run --brief .sage/work/<slug>/brief.md --project .
else
  echo "Sage: autoresearch runtime not installed — running in degraded (manual)"
  echo "mode. For the deterministic runtime: sage add xoai/sage-autoresearch"
fi

Harness contract: The verify command must print METRIC name=number to stdout. See references/harness-conventions.md.

Session State

All state lives in .sage/work/<YYYYMMDD-slug>/:

FileRole
brief.mdConfiguration (goal, metric, scope, budget)
autoresearch.mdLiving doc — ideas tried, wins, dead ends
autoresearch.jsonlStructured log (one line per iteration)
results.tsvHuman-readable view (derived from JSONL)
runs/NNNN-*.logPer-iteration stdout+stderr
.autoresearch-state.jsonCrash recovery state (not committed)

Session Resume

On resume (new session, context reset, platform switch):

  1. Read autoresearch.md for high-level context
  2. Read last 20 lines of autoresearch.jsonl for recent history
  3. Verify last JSONL commit matches git log on the branch
  4. Continue from next iteration number

See references/session-continuity.md for full protocol.

Memory Integration

Session end: Store a structured summary in sage-memory:

  • Winning patterns (what worked)
  • Losing patterns (what didn't)
  • Best achieved value
  • Iteration count

Session start: Search sage-memory for priors on this repo + metric. Inject into IDEATE as "known-good starting points" and "known dead ends."

Quality Gates

GateWhenCheck
scopeAfter MODIFYChanged files ⊆ writable, frozen untouched
pre-verifyAfter COMMITgit status is clean
metric-parseableAfter VERIFYAt least one METRIC line in stdout
budgetDuring VERIFYWall-clock ≤ per_run_seconds

Gates are enforced by the runtime, not by prose. The agent cannot bypass them.

References

  • references/loop-protocol.md — per-phase inputs, outputs, failure modes
  • references/metric-design.md — what makes a good metric
  • references/harness-conventions.md — METRIC line contract
  • references/stuck-recovery.md — escape local minima
  • references/crash-handling.md — retry vs skip decision tree
  • references/session-continuity.md — resume protocol

Signals

GitHub stars
28
Forks
7
Last commit
Sep 2026
Hacker News mentions
20
Advanced
Item type
skill
Key
autoresearch-xoai
Source
github.com/xoai/sage