codex-autoresearch-loop
Self-directed iterative research skill for Codex that continuously cycles through modify, verify, retain or discard, and repeat until a measurable goal is reached.
What this skill does
# Codex Autoresearch
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
Codex Autoresearch is a Codex skill that runs an autonomous modify→verify→keep/revert loop on your codebase. You describe a measurable goal in one sentence; Codex confirms the plan, then iterates unattended — every improvement stacks in git, every failure reverts automatically — until interrupted or a cap is reached. Inspired by Karpathy's autoresearch concept, generalized beyond ML training to any software metric.
---
## Installation
**Option A — manual copy into your project:**
```bash
git clone https://github.com/leo-lilinxiao/codex-autoresearch.git
cp -r codex-autoresearch your-project/.agents/skills/codex-autoresearch
```
**Option B — Codex skill installer:**
```text
$skill-installer install https://github.com/leo-lilinxiao/codex-autoresearch
```
The skill lives at `.agents/skills/codex-autoresearch/` inside your project. No config file is required before first use.
---
## How to Activate
Open Codex in your project directory and prefix your goal with `$codex-autoresearch`:
```text
$codex-autoresearch
I want to get rid of all `any` types in my TypeScript code
```
Codex will:
1. Scan the repo and infer scope, metric, verify command, and guard command.
2. Present a confirmation summary — reply `go` (or correct anything).
3. Run the loop unattended until you interrupt it or the goal is met.
You never write config. Codex infers everything.
---
## Confirmation Flow
Before the loop starts Codex always shows what it found and asks you to confirm. Example exchange:
```
Codex: I found 47 `any` occurrences across src/**/*.ts.
Confirmed:
- Target: eliminate `any` types in src/**/*.ts
- Metric: `any` count (current: 47), direction: lower
- Verify: grep + tsc --noEmit as guard
Need to confirm:
- Run until all gone, or cap at N iterations?
Reply "go" to start, or tell me what to change.
You: Go, run overnight.
Codex: Starting — baseline: 47. Iterating until interrupted.
```
Up to five confirmation rounds are possible. After that, Codex proceeds.
---
## The Loop (internals)
```
PHASE 0: Probe environment (CPU/GPU/RAM/toolchains), check for session resume
PHASE 1: Read context + lessons file from prior run (if any)
LOOP (forever or N times):
1. Review current state, git history, results log, lessons
2. Pick ONE hypothesis (apply perspectives, filter by environment)
-- or N hypotheses if parallel mode is active
3. Make ONE atomic change
4. git commit (before verification)
5. Run verify command → did the target metric improve?
Run guard command → did anything else break?
6. Improved → keep (extract lesson)
Worse → approved rollback strategy (git revert)
Crashed → fix or skip
7. Log the result to results log
8. Health check (disk, git, verify health)
9. If 3+ discards → REFINE; 5+ → PIVOT; 2 PIVOTs → web search
10. Repeat. Never stop. Never ask.
```
The loop runs **unbounded** unless you say `Iterations: N` during confirmation.
---
## Dual-Gate Verification
Two commands serve distinct purposes:
| Gate | Purpose | Fails means |
|------|---------|-------------|
| **Verify** | Did the target metric improve? | Change discarded, reverted |
| **Guard** | Did anything else break? | Change reworked (up to 2 attempts), then reverted |
Guard files are **never modified** by the loop.
Example verify + guard pair for a Python coverage run:
```text
Verify: pytest --cov=src --cov-report=term 2>&1 | grep TOTAL | awk '{print $NF}'
Guard: python -m mypy src --ignore-missing-imports
```
Example for TypeScript type cleanup:
```text
Verify: grep -r "any" src --include="*.ts" | wc -l
Guard: npx tsc --noEmit
```
---
## Modes
Codex maps your sentence to one of seven modes automatically — you never pick a mode explicitly.
### `loop` — iterate toward a measurable target (default)
```text
$codex-autoresearch
Improve test coverage in src/ to at least 80%
```
```text
$codex-autoresearch
Reduce bundle size — it's currently 2.3 MB, get it under 1 MB
```
### `plan` — turn a vague goal into a validated loop config
```text
$codex-autoresearch
I want to make our API faster but I don't know where to start
```
Codex will interview you (p95 latency vs throughput? which endpoint?) and produce a ready-to-run loop config.
### `fix` — repair errors until count reaches zero
```text
$codex-autoresearch
pytest is failing, 12 tests broken after the refactor — fix them all
```
### `debug` — evidence-driven root-cause hunting
```text
$codex-autoresearch
Our API returns 503 randomly under load, no idea why
```
Each iteration tests one falsifiable hypothesis. Codex presents evidence, not guesses.
### `security` — read-only STRIDE + OWASP audit
```text
$codex-autoresearch
Is this code secure?
```
### `ship` — readiness verification and release gating
```text
$codex-autoresearch
Ship it
```
### `exec` — one-shot execution with no loop
```text
$codex-autoresearch
Run the benchmark suite and summarize results
```
---
## Inline Configuration (optional)
You can override defaults inline during the confirmation step — no file edits needed:
| Phrase | Effect |
|--------|--------|
| `Iterations: 20` | Cap the loop at 20 iterations |
| `Parallel: 3` | Test 3 hypotheses concurrently per round |
| `Guard: npm test` | Override the inferred guard command |
| `Verify: <command>` | Override the inferred verify command |
| `Scope: src/api/` | Restrict changes to a subdirectory |
Example during confirmation:
```
You: Go. Iterations: 30, Guard: npm test, Scope: src/api/
```
---
## Cross-Run Learning
At the end of each iteration Codex writes a structured lesson to `.agents/skills/codex-autoresearch/lessons.md`:
```
Iteration 7 — KEPT
Hypothesis: replace explicit `any` with inferred generic in src/utils/mapper.ts
Change: added <T extends Record<string, unknown>> to mapKeys()
Result: any count 31 → 29
Lesson: Generic constraints on utility functions eliminate clusters of `any` downstream.
```
On session resume Codex reads this file first. Each new run benefits from prior runs.
**To resume an interrupted run:**
```text
$codex-autoresearch
Resume
```
Codex re-reads the lessons file, checks git state, re-establishes the baseline, and continues.
---
## Parallel Experiments
Request parallel mode during confirmation or at any time:
```text
You: Go, parallel 4
```
Codex runs four hypotheses concurrently, keeps the best result, discards the rest. Useful when hypothesis space is large.
---
## Pivot Protocol
If the loop stalls, escalation happens automatically:
| Consecutive discards | Action |
|---------------------|--------|
| 3 | **REFINE** — narrow hypothesis, try smaller atomic changes |
| 5 | **PIVOT** — change strategy entirely |
| 2 PIVOTs | **Web search** — Codex fetches external references to unstick itself |
You are never asked for permission during escalation. The loop continues.
---
## Real Code Examples
### Example 1 — TypeScript `any` elimination (Python verify script)
If you want a custom verify script instead of a one-liner:
```python
# scripts/count_any.py
import subprocess, sys
result = subprocess.run(
["grep", "-r", "--include=*.ts", r"\bany\b", "src/"],
capture_output=True, text=True
)
count = len(result.stdout.strip().splitlines())
print(count)
sys.exit(0) # always exit 0; the number is what matters
```
Tell Codex during confirmation:
```text
Verify: python scripts/count_any.py
Guard: npx tsc --noEmit
```
### Example 2 — pytest coverage loop (Python)
```python
# scripts/coverage_pct.py
import subprocess, re, sys
out = subprocess.check_output(
["pytest", "--cov=src", "--cov-report=term", "-q"],
stderr=subprocess.STDOUT, text=True
)
match = re.search(r"TOTAL\s+\d+\s+\d+\s+(\d+)%", out)
if match:
print(int(match.group(1)))
sys.exit(0)
print(0)
sys.exit(0)
```
```text
$codex-autoresearch
Improve test coverage — targeRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.