
Write HTML. Render video. Built for agents.
SkillOpt trains a skill document as if it were model state, using rollouts, reflection, aggregation, selection, and validation gates. The output is a compact markdown skill that runs with the same target model, plus optional sleep-style self-evolution for local agents and a web UI for monitoring.
Builders who want agent instructions to improve across sessions, tasks, and benchmarks instead of staying hand-written and static.
You can turn repeated agent work into a validated skill file that you reuse across sessions and harnesses.
Accepts an edit only when it improves a held-out validation score, with rejected-edit buffering and bounded add/delete/replace changes.
Produces a compact `best_skill.md` artifact that runs against the unchanged target model.
`skillopt_sleep` can harvest past sessions, replay tasks, consolidate skills, and gate updates offline.
Supports chat and exec backends such as OpenAI, Azure, Claude, Qwen, MiniMax, Codex CLI, Claude Code CLI, Cursor, and Copilot.
Includes built-in benchmark environments and configs under `skillopt/envs/` and `configs/` for training and evaluation.
Provides `skillopt_webui` for watching runs and inspecting training progress.
pip install -e ".[webui]" python -m skillopt_webui.app
Train agent skills like you train neural networks — with epochs, (mini-)batchsize, learning rates, and validation gates — but without touching model weights.
📖 For installation, data preparation, training/eval commands, configuration, and framework internals, start with the versioned SkillOpt documentation. A concise rendered overview is available in the Documentation & Reproduction Guide, and longer-form engineering analysis appears on the Technical Blog. We also maintain a Changelog for released and unreleased changes.
skillopt-sleep CLI. It also includes experimental multi-objective, replay, and dream-rollout controls; the main CLI keeps conservative defaults and does not expose every experiment-harness control as a flag. The release source adds integration shells for Claude Code, Codex, Copilot, and Devin, plus an OpenClaw reference adaptation; these plugin/MCP files live in the repository rather than the PyPI wheel. It also adds SearchQA split materialization, Windows robustness, and hardened JSON parsing. See the release notes for full release details and contributor acknowledgements.docs/sleep/README.md for what it is, how to use it, and results.pip install skillopt. This initial release includes the full training loop (rollout → reflect → aggregate → select → update → evaluate), multi-backend support (OpenAI / Azure / Claude / Qwen / MiniMax), six built-in benchmarks, and WebUI dashboard.Modern agent skills are usually hand-crafted, generated one-shot by a strong LLM, or evolved through loosely controlled self-revision — none of which behaves like a deep-learning optimizer for the skill itself, and none of which reliably improves over its starting point under feedback.
SkillOpt treats the skill document as the trainable state of a frozen agent, and trains it with the discipline that makes weight-space optimization reproducible. A separate optimizer model turns scored rollouts into bounded add / delete / replace edits on a single skill document; in the default paper-style path, a candidate edit is accepted only when it strictly improves a held-out validation score. A textual learning-rate budget, a rejected-edit buffer, and an epoch-wise slow / meta update make skill training stable while adding zero inference-time model calls at deployment.
The deployed artifact is a compact best_skill.md (typically 300–2,000
tokens) that runs against the unchanged target model. Across six
benchmarks, seven target models, and three execution harnesses (direct
chat, Codex CLI, Claude Code CLI), SkillOpt is best or tied-best on all
52 evaluated (model, benchmark, harness) cells and on GPT-5.5 lifts the
average no-skill accuracy by +23.5 points in direct chat, +24.8 inside
the Codex agentic loop, and +19.1 inside Claude Code. Optimized skill
artifacts transfer across model scales, between Codex and Claude Code
harnesses, and to nearby benchmarks without further optimization.
For the full method, ablations, and per-cell results see the paper; for a visual walkthrough of the loop see the project page; for deeper API / backend / benchmark docs see docs/.
https://github.com/user-attachments/assets/eb12d3bc-371c-467f-904d-91b61f339ed7
▶ Watch the full demo on YouTube
A backend = a chat / exec target (e.g. openai_chat, claude_chat,
qwen_chat, minimax_chat, copilot_chat, openai_compatible, codex_exec,
claude_code_exec, cursor_exec, copilot_exec). If a provider implements the OpenAI Chat Completions
protocol, try the built-in openai_compatible backend before adding code. See
docs/guide/new-backend.md for the full
contract. Chat backends add a skillopt/model/<name>_backend.py module;
target-only exec backends use the shared harness in codex_harness.py.
Both register through common.py, backend_config.py, and
skillopt/model/__init__.py.
A benchmark = a skillopt/envs/<name>/ package with an adapter, a data loader,
a scored rollout helper, a YAML config, and optionally an initial seed skill.
See
docs/guide/new-benchmark.md for the full
contract; the simplest reference is skillopt/envs/searchqa/.
Launch the monitoring dashboard (optional):
pip install -e ".[webui]"
python -m skillopt_webui.app
| Flag | Default | Description |
|---|---|---|
--port | 7860 | Server port |
--host | 0.0.0.0 | Bind address |
--share | off | Create a public Gradio share link |
The default host listens on every network interface. Use
--host 127.0.0.1 for local-only access.
@article{yang2026skillopt,
title={Skillopt: Executive strategy for self-evolving agent skills},
author={Yang, Yifan and Gong, Ziyang and Huang, Weiquan and Yang, Qihao and Zhou, Ziwei and Huang, Zisu and Li, Yan and Gao, Xuemei and Dai, Qi and Liu, Bei and others},
journal={arXiv preprint arXiv:2605.23904},
year={2026}
}
Sign in to join the discussion.
No comments yet. Be the first to say what this is good for.

Write HTML. Render video. Built for agents.
Ultra-lightweight, open-source, self-hosted personal AI agent framework in Python with WebUI, tools, memory, MCP, multi-agent workflows, automation, and chat apps

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.
A theoretical reconstruction of the Claude Mythos architecture, built from first principles using the available research literature.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!

Open-source Agent Operating System