microsoft/SkillOptPublic

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.

AI summary: A framework for optimizing the selection and sequencing of skills for AI agents.

Stars
15.7K
+87 today
Forks
1.5K
Watchers
60
Open issues
20
Open PRs
14
Contributors
~49
Commits
376
Branches
13

PythonMITCreated May 8, 2026Last push todayLatest release v0.2.0+371 stars this week+442 this month

Star history

since May 24, 2026
05K10K15KMay 2026Jun 2026Jul 2026Aug 2026
15.7K stars as of Aug 7, 2026, tracked back to May 24, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFri2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 3 commits2026-05-22: 1 commit2026-05-23: 0 commits2026-05-24: 35 commits2026-05-25: 6 commits2026-05-26: 4 commits2026-05-27: 0 commits2026-05-28: 3 commits2026-05-29: 3 commits2026-05-30: 8 commits2026-05-31: 10 commits2026-06-01: 6 commits2026-06-02: 5 commits2026-06-03: 1 commit2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 1 commit2026-06-08: 30 commits2026-06-09: 2 commits2026-06-10: 9 commits2026-06-11: 0 commits2026-06-12: 8 commits2026-06-13: 0 commits2026-06-14: 2 commits2026-06-15: 8 commits2026-06-16: 8 commits2026-06-17: 1 commit2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 9 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 10 commits2026-06-24: 2 commits2026-06-25: 4 commits2026-06-26: 2 commits2026-06-27: 2 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 2 commits2026-07-01: 0 commits2026-07-02: 1 commit2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 1 commit2026-07-06: 4 commits2026-07-07: 1 commit2026-07-08: 1 commit2026-07-09: 5 commits2026-07-10: 0 commits2026-07-11: 1 commit2026-07-12: 7 commits2026-07-13: 11 commits2026-07-14: 12 commits2026-07-15: 1 commit2026-07-16: 3 commits2026-07-17: 0 commits2026-07-18: 3 commits2026-07-19: 3 commits2026-07-20: 5 commits2026-07-21: 4 commits2026-07-22: 0 commits2026-07-23: 11 commits2026-07-24: 2 commits2026-07-25: 4 commits2026-07-26: 12 commits2026-07-27: 3 commits2026-07-28: 5 commits2026-07-29: 0 commits2026-07-30: 1 commit2026-07-31: 2 commits2026-08-01: 2 commits2026-08-02: 3 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits
293 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    15,737 stars

  • Breakout launch

    15,737 stars in 91 days

  • Actively maintained

    Pushed within 48 hours

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

  • Repeat trending

    6 trending appearances

What SkillOpt does

SkillOpt is a research framework developed by Microsoft that focuses on optimizing how autonomous AI agents select, sequence, and utilize their available skills to complete complex tasks. Instead of relying on static prompting or exhaustive search, it uses machine learning techniques to dynamically determine the most efficient path of execution. The system evaluates the context of the current task state to prune irrelevant skills, reducing computational overhead and improving the agent's success rate on multi-step problems.

AI researchers and advanced engineers building complex, multi-tool autonomous agents. It requires strong knowledge of machine learning and agent architectures.

  • Dynamic skill selection: Uses contextual evaluation to filter out irrelevant tools, narrowing the agent's search space.
  • Sequence optimization: Learns the most effective order in which to apply skills for specific classes of problems.
  • Context-aware pruning: Actively reduces computational overhead by pruning branches of execution that are unlikely to succeed.
  • Extensible skill definitions: Allows developers to define custom skills and integrate them into the optimization pipeline.
  • Performance metrics: Provides built-in telemetry to measure the efficiency and success rate of different skill sequences.

Where teams use it

Complex problem solving

AI researchers use the framework to build agents capable of solving multi-step mathematical or logic puzzles efficiently.

Agent cost reduction

Enterprise teams deploy SkillOpt to minimize API calls and token usage by preventing agents from using unnecessary tools.

Autonomous toolchain optimization

Developers use it to automatically discover the best combination of internal APIs needed to resolve a specific user query.

Reinforcement learning research

Academics leverage the framework to study how agents can learn optimal behavior policies in environments with vast toolsets.

Getting started: Clone the repository and follow the setup instructions to run the benchmark examples.

README

main branch

SkillOpt: Executive Strategy for Self-Evolving Agent Skills

Train agent skills like you train neural networks — with epochs, (mini-)batchsize, learning rates, and validation gates — but without touching model weights.

Project Page Paper Project Video PyPI Python 3.10+ License: MIT

microsoft%2FSkillOpt | Trendshift microsoft%2FSkillOpt | Trendshift

📖 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.


News 🔥🔥🔥

  • [2026-07-24] 📰 SkillOpt in the news. Read the official Microsoft Research feature, along with recent coverage from VentureBeat, Synced (机器之心), Flowtivity, and The Decoder.
  • [2026-07-02] 🚀 SkillOpt v0.2.0 is out on PyPI! Headline feature: SkillOpt-Sleep, a nightly offline self-evolution engine (harvest → mine → replay → consolidate behind a held-out validation gate), now shipped as the 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.
  • [2026-06-15] 😴 SkillOpt-Sleep (preview) — a nightly offline self-evolution companion for local coding agents (Claude Code / Codex / Copilot): review past sessions, replay recurring tasks, and consolidate validated skills behind a held-out gate. See docs/sleep/README.md for what it is, how to use it, and results.
  • [2026-06-03] 🎉 gbrain, gbrain-evals, and darwin-skill have all integrated SkillOpt.
  • [2026-06-02] 🎉 SkillOpt v0.1.0 is now available on PyPI! Install with 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.

Overview

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/.

🎬 Demo Video

64c8f76086bed7bd7a5ce664a7a14f40_raw.mp4

▶ Watch the full demo on YouTube


Extensibility & WebUI

Adding a new backend

A backend = a chat / exec target (e.g. openai_chat, claude_chat, qwen_chat, minimax_chat, openai_compatible, codex_exec, claude_code_exec, cursor_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.

Adding a new benchmark

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/.

WebUI

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.


Citation

@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}
}
View on GitHub

Recent activity

commits and pull requests

Releases and announcements

2 total
  1. ## [0.2.0] — 2026-07-02 The headline of this release is **SkillOpt-Sleep**: a nightly offline self-evolution engine that harvests a coding agent's real session transcripts, mines recurring tasks, replays them offline, and consolidates short-term experience into long-term memory and skills — all behind the same held-out validation gate that keeps SkillOpt training honest. It ships as a decoupled top-level package (`skillopt_sleep/`, zero dependency on the research code) and as the new `skillopt-sleep` CLI. ### Added - **SkillOpt-Sleep engine** — nightly offline self-evolution cycle (harvest → mine → replay → consolidate) behind a validation gate, exposed as the `skillopt-sleep` console script and `python -m skillopt_sleep`. - Multi-objective reward (accuracy / tokens / latency) with user preferences. - Multi-rollout contrastive reflection under a token/time budget. - Experience replay + controllable dream rollouts (opt-in). - Slow-update long-term memory field (runs even with the gate off). - 3-way train/val/test split with `gate_mode on|off`. - Verifier-discipline validation gate, with a stress-test suite (thanks @Tanmay9223, #87). - **Cross-tool backends & pl

  2. v0.1.0v0.1.0Jun 2, 2026

    ## SkillOpt v0.1.0 — Initial PyPI Release The first public release of SkillOpt, now available on [PyPI](https://pypi.org/project/skillopt/0.1.0/). ### Install ```bash pip install skillopt ``` ### Highlights - Core training loop: rollout → reflect → aggregate → select → update → evaluate - Multi-backend support: OpenAI, Azure OpenAI, Claude, Qwen (vLLM) - Built-in benchmarks: ALFWorld, SpreadsheetBench, SearchQA, DocVQA, OfficeQA, LiveMath - Hierarchical patch merging and gradient clipping - YAML-based configuration system - Optional WebUI dashboard (`pip install skillopt[webui]`) ### Links - 📦 PyPI: https://pypi.org/project/skillopt/0.1.0/ - 📖 Docs: https://microsoft.github.io/SkillOpt

Code frequency

additions and deletions
+30.3K-30.3KWeek of 2026-05-17: +30,266 linesWeek of 2026-05-17: -7 linesWeek of 2026-05-24: +23,542 linesWeek of 2026-05-24: -18,006 linesWeek of 2026-05-31: +23,416 linesWeek of 2026-05-31: -6,776 linesWeek of 2026-06-07: +14,966 linesWeek of 2026-06-07: -6,079 linesWeek of 2026-06-14: +5,321 linesWeek of 2026-06-14: -2,361 linesWeek of 2026-06-21: +2,420 linesWeek of 2026-06-21: -197 linesWeek of 2026-06-28: +320 linesWeek of 2026-06-28: -35 linesWeek of 2026-07-05: +2,116 linesWeek of 2026-07-05: -118 linesWeek of 2026-07-12: +15,519 linesWeek of 2026-07-12: -2,832 linesWeek of 2026-07-19: +6,161 linesWeek of 2026-07-19: -6,933 linesWeek of 2026-07-26: +4,301 linesWeek of 2026-07-26: -645 linesWeek of 2026-08-02: +1,060 linesWeek of 2026-08-02: -87 linesMay 17, 2026Aug 2, 2026
+129.4K lines added, -44.1K removed over the last year.

Commits per week

last 52 weeks
590Week of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 4 commitsWeek of 2026-05-24: 59 commitsWeek of 2026-05-31: 22 commitsWeek of 2026-06-07: 50 commitsWeek of 2026-06-14: 28 commitsWeek of 2026-06-21: 20 commitsWeek of 2026-06-28: 3 commitsWeek of 2026-07-05: 13 commitsWeek of 2026-07-12: 37 commitsWeek of 2026-07-19: 29 commitsWeek of 2026-07-26: 25 commitsWeek of 2026-08-02: 3 commitsAug 10, 2025Aug 2, 2026
293 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 1 commitsSun 2:00 — 0 commitsSun 3:00 — 1 commitsSun 4:00 — 0 commitsSun 5:00 — 4 commitsSun 6:00 — 0 commitsSun 7:00 — 2 commitsSun 8:00 — 1 commitsSun 9:00 — 3 commitsSun 10:00 — 0 commitsSun 11:00 — 2 commitsSun 12:00 — 1 commitsSun 13:00 — 0 commitsSun 14:00 — 3 commitsSun 15:00 — 6 commitsSun 16:00 — 2 commitsSun 17:00 — 14 commitsSun 18:00 — 10 commitsSun 19:00 — 16 commitsSun 20:00 — 0 commitsSun 21:00 — 6 commitsSun 22:00 — 1 commitsSun 23:00 — 1 commitsMon 0:00 — 5 commitsMon 1:00 — 1 commitsMon 2:00 — 2 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 1 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 0 commitsMon 10:00 — 0 commitsMon 11:00 — 1 commitsMon 12:00 — 0 commitsMon 13:00 — 3 commitsMon 14:00 — 34 commitsMon 15:00 — 4 commitsMon 16:00 — 9 commitsMon 17:00 — 2 commitsMon 18:00 — 1 commitsMon 19:00 — 0 commitsMon 20:00 — 2 commitsMon 21:00 — 5 commitsMon 22:00 — 0 commitsMon 23:00 — 3 commitsTue 0:00 — 2 commitsTue 1:00 — 1 commitsTue 2:00 — 2 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 1 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 4 commitsTue 9:00 — 13 commitsTue 10:00 — 1 commitsTue 11:00 — 2 commitsTue 12:00 — 1 commitsTue 13:00 — 1 commitsTue 14:00 — 0 commitsTue 15:00 — 0 commitsTue 16:00 — 4 commitsTue 17:00 — 3 commitsTue 18:00 — 4 commitsTue 19:00 — 4 commitsTue 20:00 — 2 commitsTue 21:00 — 0 commitsTue 22:00 — 6 commitsTue 23:00 — 2 commitsWed 0:00 — 0 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 0 commitsWed 10:00 — 0 commitsWed 11:00 — 2 commitsWed 12:00 — 1 commitsWed 13:00 — 7 commitsWed 14:00 — 1 commitsWed 15:00 — 1 commitsWed 16:00 — 1 commitsWed 17:00 — 1 commitsWed 18:00 — 0 commitsWed 19:00 — 0 commitsWed 20:00 — 0 commitsWed 21:00 — 0 commitsWed 22:00 — 0 commitsWed 23:00 — 1 commitsThu 0:00 — 0 commitsThu 1:00 — 1 commitsThu 2:00 — 5 commitsThu 3:00 — 5 commitsThu 4:00 — 0 commitsThu 5:00 — 1 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 1 commitsThu 10:00 — 3 commitsThu 11:00 — 1 commitsThu 12:00 — 0 commitsThu 13:00 — 0 commitsThu 14:00 — 0 commitsThu 15:00 — 2 commitsThu 16:00 — 0 commitsThu 17:00 — 3 commitsThu 18:00 — 0 commitsThu 19:00 — 0 commitsThu 20:00 — 0 commitsThu 21:00 — 2 commitsThu 22:00 — 2 commitsThu 23:00 — 5 commitsFri 0:00 — 1 commitsFri 1:00 — 1 commitsFri 2:00 — 1 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 4 commitsFri 9:00 — 3 commitsFri 10:00 — 1 commitsFri 11:00 — 0 commitsFri 12:00 — 0 commitsFri 13:00 — 0 commitsFri 14:00 — 0 commitsFri 15:00 — 2 commitsFri 16:00 — 3 commitsFri 17:00 — 0 commitsFri 18:00 — 0 commitsFri 19:00 — 2 commitsFri 20:00 — 0 commitsFri 21:00 — 0 commitsFri 22:00 — 0 commitsFri 23:00 — 0 commitsSat 0:00 — 0 commitsSat 1:00 — 0 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 1 commitsSat 7:00 — 1 commitsSat 8:00 — 1 commitsSat 9:00 — 0 commitsSat 10:00 — 0 commitsSat 11:00 — 2 commitsSat 12:00 — 3 commitsSat 13:00 — 2 commitsSat 14:00 — 4 commitsSat 15:00 — 4 commitsSat 16:00 — 2 commitsSat 17:00 — 1 commitsSat 18:00 — 4 commitsSat 19:00 — 0 commitsSat 20:00 — 0 commitsSat 21:00 — 1 commitsSat 22:00 — 2 commitsSat 23:00 — 1 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jul 21, 2026daily#14+4
Jun 16, 2026daily#19+16
Jun 14, 2026daily#25+32
May 29, 2026daily#24+35
May 28, 2026daily#20+41
May 27, 2026daily#24+36