Sandbox
@OpenLAIR/OpenSkill

Open-world skill evolution framework for Claude Code and Codex

OpenSkill is a framework for teaching an agent to build its own task skills and verification signals from open-world resources. It runs a three-stage loop: gather grounding, evolve skills in a sandbox, then evaluate the frozen skill against hidden tests.

88 starsβ€’4 forksβ€’PDDLβ€’Updated 7d ago
Who it's for

Builders who want Claude Code or Codex to develop reusable task skills from scratch with grounded checks.

What it delivers

You can grow agent skills without prebuilt supervision and still evaluate them in a controlled final pass.

What it does

Open-world knowledge acquisition

Retrieves task-relevant knowledge and verification anchors from docs, repos, papers, and the web.

Leakage-free skill evolution

Refines skills in a sandbox against self-built virtual tests without exposing hidden task answers.

Zero-shot target evaluation

Runs the frozen skill on the target agent and unlocks ground-truth tests only at the end.

Benchmark task sets

Ships clean tasks in `tasks/` and evolved task versions with released skills and documents in `tasks-evolved/`.

Agent runtime and wrappers

Includes `libs/terminus_agent` for skill discovery, virtual verification, pytest parsing, and evaluation wrappers.

How to get it

  1. 1Run
    git clone https://github.com/OpenLAIR/OpenSkill.git
    cd OpenSkill
    uv sync --locked          # pinned dependency tree, including the Harbor sandbox framework
    cp .env.example .env      # then fill in your API keys

README

🧭 OpenSkill

Open-World Self-Evolution for LLM Agents

An agent that builds both its skills and its own verification signals from scratch β€” using only a task prompt and open-world resources, with no target-task supervision.

Website arXiv Hugging Face Papers Code License


πŸ“° News

  • 2026/08 πŸŽ‰ OpenSkill is accepted by EMNLP 2026!
  • 2026/05 πŸš€ Initial release of OpenSkill.

Overview

Self-evolving agents need to adapt after deployment β€” but existing methods assume a usable learning loop is already there: curated skills, successful trajectories, or verifier signals. Real open-world deployments may offer none of these, only a task prompt.

OpenSkill studies open-world self-evolution: an agent must build both its skills and its own verification signals from scratch, drawing on open-world resources but no target-task supervision. Target-task supervision is reserved strictly for final evaluation.

πŸ“ˆ Scalable
Skills are sourced from the open world, not bounded by a human's or model's prior knowledge.
🌐 Grounded
Knowledge and verification anchors come from real docs, repositories, and the web.
πŸ”’ Supervision-free
No gold answers, rewards, or verifier outputs during learning β€” a leakage barrier keeps them out.

The Idea β€” a new paradigm for self-evolving skills

Unlike human-curated, LLM-generated, or supervised self-evolution, OpenSkill acquires skills from the open world and verifies them with self-built virtual tasks β€” making it simultaneously scalable, grounded, and supervision-free. Prior paradigms each miss at least one of these properties.

Four paradigms for self-evolving agent skills: Human-Curated, LLM-Generated, Supervised Self-Evolution, and Ours: Open-World.

How OpenSkill works

Given only a task prompt, a base model, tool access, and open-world resources, OpenSkill bootstraps a learning loop from scratch in three stages.

StageNameWhat happens
01Open-world knowledge acquisitionRetrieves task-relevant knowledge and independent verification anchors from docs, repos, papers, and the web β€” then drafts a structured skill plan.
02Leakage-free skill evolutionDrafts skills and refines them in a sandbox against self-built virtual tests grounded in the anchors, fixing bugs and knowledge gaps over up to three rounds.
03Zero-shot target evaluationDeploys the frozen skill to the target agent. Ground-truth tests are unlocked only here, at final evaluation β€” never during construction.
OpenSkill framework overview: open-world knowledge acquisition, leakage-free evolution loop with a virtual-task verifier and diagnostic retriever, and final evaluation.
A leakage barrier keeps target supervision out of skill construction, unlocking it only for final evaluation.

πŸš€ Getting Started

Requirements

  • Python 3.12+ and uv
  • Docker (each task runs in its own container)
  • API keys: Anthropic (skill creation & evaluation), Gemini (deep research & search grounding), optionally OpenAI (Codex evaluation)

Installation

git clone https://github.com/OpenLAIR/OpenSkill.git
cd OpenSkill
uv sync --locked          # pinned dependency tree, including the Harbor sandbox framework
cp .env.example .env      # then fill in your API keys

All dependency versions (including the Harbor evaluation framework and the google-genai SDK) are pinned in uv.lock to the exact versions the release was validated with.

Repository layout

OpenSkill/
β”œβ”€β”€ libs/
β”‚   β”œβ”€β”€ openskill/               # the OpenSkill pipeline
β”‚   β”‚   β”œβ”€β”€ pipeline.py          #   Stage 1–3 orchestrator 
β”‚   β”‚   β”œβ”€β”€ run_pipeline.py      #   CLI: evolve skills from scratch
β”‚   β”‚   β”œβ”€β”€ run_eval.py          #   CLI: zero-shot evaluation of existing skills
β”‚   β”‚   β”œβ”€β”€ openskill_evolution.py #  in-container skill-creator agent 
β”‚   β”‚   β”œβ”€β”€ agent_planner.py     #   research-query synthesis        
β”‚   β”‚   β”œβ”€β”€ skill_planner.py     #   multi-skill plan + references   
β”‚   β”‚   β”œβ”€β”€ deep_research_client.py # deep-research retrieval        
β”‚   β”‚   └── targeted_dr.py       #   gap-vs-bug diagnosis & retrieval 
β”‚   └── terminus_agent/          # agent runtime: skill discovery, virtual verifier,
β”‚                                #   pytest parsing, evaluation-agent wrappers
β”œβ”€β”€ .claude/skills/skill-creator/ # meta-skill injected into the creator agent
β”œβ”€β”€ tasks/                       # 84 SkillsBench tasks β€” no skills
β”œβ”€β”€ tasks-evolved/               # the same tasks + skills evolved by OpenSkill + retrieved docs
└── pyproject.toml / uv.lock / LICENSE / .env.example

Two copies of the benchmark ship with the repo:

  • tasks/ β€” clean task definitions (instruction, environment, hidden tests). The input for evolving skills from scratch.
  • tasks-evolved/ β€” identical tasks with the released evolved skills (environment/skills/evo-*) and the retrieved knowledge documents (environment/doc/) used in the paper. The input for reproducing the main results.

πŸ“Š Reproducing the main results

Evaluate the released skills with a fresh target agent (Claude Code + Opus 4.6, the paper's main setting). Ground-truth tests run only in this stage:

uv run python -m libs.openskill.run_eval \
    --tasks 3d-scan-calc \
    --tasks-dir tasks-evolved \
    --eval-agent claude-code \
    --model anthropic/claude-opus-4-6 \
    --eval-runs 5
  • --eval-runs 5 follows the paper protocol (n_eval = 5 independent zero-shot runs per task).
  • --eval-agent selects the target harness: claude-code or codex.
  • To sweep the whole benchmark, pass --tasks $(ls tasks-evolved).
  • On machines with slow disks, add --timeout-multiplier 4 to scale the per-task Docker build and agent timeouts.

Results are appended to results/eval_results.csv (per-task reward and test-level accuracy).


🧬 Evolving skills from scratch

Run the full three-stage pipeline on a clean task β€” deep research, skill planning, verification-anchor retrieval, sandboxed evolution against the virtual verifier, then a 5-run evaluation of the newly evolved skills:

uv run python -m libs.openskill.run_pipeline \
    --tasks 3d-scan-calc \
    --eval-runs 5

The pipeline copies the task from tasks/ into an isolated workspace/, strips any pre-existing skills or documents, and never exposes the hidden test suite to the creator or the verifier. Evolved skills land in workspace/<task>/environment/skills/evo-*; the full evolution trace (interventions, virtual-test results, verifier sessions) is stored under jobs/<job-name>/.

[!NOTE] Skill evolution is stochastic. On tasks whose instructions under-specify conventions (units, interface variants, event definitions), a single evolution run can converge to a convention that differs from the hidden tests, so per-task rewards vary across runs. The skills in tasks-evolved/ are the validated versions used for the paper's numbers; use them for exact reproduction, and expect run-to-run variance when re-evolving from scratch.


Results β€” best automated pass rate on every setting

On SkillsBench (11 domains) OpenSkill beats the strongest closed-world baseline by +8.9 / +8.8 points and lands within 1–3 points of the human upper bound β€” while honoring the no-supervision constraint.

MetricValue
Overall pass rate on Opus 4.643.6% Β (+8.9 over best baseline)
Overall pass rate on GPT 5.242.1% Β (+8.8 over best baseline)
GT test intents covered by self-built verifier88.9%
Domains best / tied-best on Opus 4.68 / 11

SkillsBench β€” overall average pass rate (%) Β (Human = reference upper bound, excluded from ranking)

Target agentNo SkillSelf-GenCoTSkill-CreatorAutoSkillMementoOpenSkillHuman
Opus 4.6 (Claude Code)25.523.923.934.724.730.143.644.5
GPT 5.2 (Codex)25.032.233.329.211.215.642.144.8

Beyond SkillsBench, OpenSkill is also the best automated method on SocialMaze (82.7% / 70.7%) and ScienceWorld (90.0% / 85.3%) across both target agents.


Analysis β€” skills transfer, the verifier aligns, every component matters Β (click to expand)


RQ1 β€” Transferability Skills generated by Opus 4.6 transfer as-is to four weaker models, improving by +5.5 to +14.8 points over no-skill with no model-specific adaptation.

RQ2 β€” Virtual verifier quality Without ever seeing ground-truth tests, the verifier reaches 80.5% recall against GT-positive outcomes, 60.7% overall agreement, and covers 88.9% of GT test intents.

RQ3 β€” Component contribution. On SocialMaze, reward peaks at three refinement rounds; open-world query and the virtual verifier each improve over a parametric-only baseline and are largely complementary.

Transferability of Opus 4.6-generated skills to four weaker models. Β  Ablations on SocialMaze: reward vs refinement iterations, and component contributions.

πŸ—ΊοΈ Roadmap

🟒 Released

  • Project page & overview β€” openlair.github.io/openskill
  • Paper preprint (arXiv) β€” arXiv:2606.06741
  • Core OpenSkill framework code (knowledge acquisition β†’ skill evolution β†’ evaluation)
  • Reproduction scripts for the SkillsBench main results
  • Evolved skills and retrieved knowledge documents for all 84 SkillsBench tasks (tasks-evolved/)

Citation

@misc{yan2026openskillopenworldselfevolutionllm,
  title         = {OpenSkill: Open-World Self-Evolution for LLM Agents},
  author        = {Zhiling Yan and Dingjie Song and Hanrong Zhang and Wei Liang and Yuxuan Zhang and Yutong Dai and Lifang He and Philip S. Yu and Ran Xu and Xiang Li and Lichao Sun},
  year          = {2026},
  eprint        = {2606.06741},
  archivePrefix = {arXiv},
  primaryClass  = {cs.AI},
  url           = {https://arxiv.org/abs/2606.06741}
}

Authors & Affiliations Β (click to expand)


Zhiling Yan1,*, Dingjie Song1,*, Hanrong Zhang2, Wei Liang1, Yuxuan Zhang3,4, Yutong Dai5, Lifang He1, Philip S. Yu2, Ran Xu5, Xiang Li6, Lichao Sun1,†

1 Lehigh University Β Β·Β  2 University of Illinois Chicago Β Β·Β  3 University of British Columbia Β Β·Β  4 Vector Institute Β Β·Β  5 Salesforce AI Research Β Β·Β  6 Massachusetts General Hospital & Harvard Medical School

* Equal contribution Β Β  † Corresponding author


Β Β  Β Β  Β Β  Β Β  Β Β 

OpenSkill Β· Open-World Self-Evolution for LLM Agents Β· 2026 Β· OpenLAIR

Files in the repo

Repository payloadβ€’12 top-level entries
  • .claude
  • assets
  • libs
  • tasks
  • tasks-evolved
  • .env.example
  • .gitignore
  • CITATION.cff
  • LICENSE
  • pyproject.toml
  • README.md
  • uv.lock

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More frameworks & sdks

HKUDS/nanobotFrameworks & SDKs

Ultra-lightweight, open-source, self-hosted personal AI agent framework in Python with WebUI, tools, memory, MCP, multi-agent workflows, automation, and chat apps

48k
microsoft/
SkillOpt
microsoft/SkillOptFrameworks & SDKs

SkillOpt is a text-space optimizer that trains reusable natural-language skills for frozen LLM agents through trajectory-driven edits, validation-gated updates, and deployable best_skill.md artifacts.

17k
omnigent-ai/omnigentFrameworks & SDKs

Omnigent is an open-source AI agent framework and meta-harness: orchestrate Claude Code, Codex, Cursor, Pi, and custom agents β€” swap harnesses without rewriting, enforce policies and sandboxing, and collaborate in real time from any device.

9.8k
kyegomez/
OpenMythos
kyegomez/OpenMythosFrameworks & SDKs

A theoretical reconstruction of the Claude Mythos architecture, built from first principles using the available research literature.

15k
D4Vinci/ScraplingFrameworks & SDKs

πŸ•·οΈ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!

80k