New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Their Claude agent to self-improve from past usage

SkillOpt-Sleep: offline self-evolution for a local Claude agent

by alirezarezvani · MIT license · ★ 26,349 on GitHub · updated Aug 30

SkillOpt-Sleep: offline self-evolution for a local Claude agent cover

Use when the user wants their Claude agent to self-improve from past usage, asks about a nightly/offline 'sleep' or 'dream' cycle, memory/skill consolidation, or says things like 'make my agent better the more I use it', 'review my past…

---
name: skillopt-sleep
description: "Use when the user wants their Claude agent to self-improve from past usage, asks about a nightly/offline 'sleep' or 'dream' cycle, memory/skill consolidation, or says things like 'make my agent better the more I use it', 'review my past sessions', 'learn my preferences', 'consolidate what you learned', 'run the sleep cycle', or wants to schedule offline self-optimization. Drives the skillopt_sleep engine: harvest past sessions -> mine recurring tasks -> replay offline -> consolidate validated CLAUDE.md and SKILL.md behind a held-out gate."
---

# SkillOpt-Sleep: offline self-evolution for a local Claude agent

SkillOpt-Sleep gives the user's agent a **sleep cycle**. While the user is
offline (e.g. nightly), it reviews their real past Claude Code sessions,
re-runs recurring tasks on their own API budget, and consolidates what it
learns into **memory** (`CLAUDE.md`) and **skills** (`SKILL.md`) — but only
keeps changes that pass a held-out validation gate, and only after the user
adopts them. The agent gets measurably better at *this* user's recurring work,
with no model-weight training. It is the deployment-time analogue of training:
short-term experience → long-term competence.

It synthesizes three ideas:
- **SkillOpt** — the skill/memory doc is trainable text; bounded add/delete/replace

Overview

SkillOpt-Sleep gives the user's agent a sleep cycle. While the user is offline (e.g. nightly), it reviews their real past Claude Code sessions, re-runs recurring tasks on their own API budget, and consolidates what it learns into memory (CLAUDE.md) and skills (SKILL.md) — but only keeps changes that pass a held-out validation gate, and only after the user adopts them. The agent gets measurably better at this user's recurring work, with no model-weight training. It is the deployment-time analogue of training: short-term experience → long-term competence.

Manual install (npx, ZIP)
Claude Codenpx skills add alirezarezvani/claude-skills --skill skillopt-sleep -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/alirezarezvani/claude-skills/tar.gz/19392f7a0826 \ | tar -xz -C ~/.claude/skills --strip-components=4 claude-skills-19392f7a0826/engineering/skillopt-sleep/skills/skillopt-sleep
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/3385b0bc6232482dfb70/skillopt-sleep.zip" -OutFile "$env:TEMP\skillopt-sleep.zip"; Expand-Archive "$env:TEMP\skillopt-sleep.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md7.1 KB
Read the files here
alirezarezvani/19392f71 file
Shared references2SKILL.md reads these from elsewhere in the repo. Not in the ZIP.Get them on GitHub ↗
SKILL.md
Show the full text129 lines

SkillOpt-Sleep: offline self-evolution for a local Claude agent

SkillOpt-Sleep gives the user's agent a sleep cycle. While the user is offline (e.g. nightly), it reviews their real past Claude Code sessions, re-runs recurring tasks on their own API budget, and consolidates what it learns into memory (CLAUDE.md) and skills (SKILL.md) — but only keeps changes that pass a held-out validation gate, and only after the user adopts them. The agent gets measurably better at this user's recurring work, with no model-weight training. It is the deployment-time analogue of training: short-term experience → long-term competence.

It synthesizes three ideas:

  • SkillOpt — the skill/memory doc is trainable text; bounded add/delete/replace edits; accepted only through a held-out gate; rejected edits become negative feedback.
  • Claude Dreams — offline consolidation that reads past sessions and rebuilds memory (dedup/merge/resolve); the input is never mutated; output is reviewed then adopted.
  • Agent sleep — periodic offline replay turns episodes into durable skill.

When to use this skill

Trigger when the user wants any of:

  • "make my agent learn from how I use it" / "get better the more I use it" / "remember my preferences across sessions"
  • a nightly/scheduled or on-demand offline self-improvement / dream / sleep run
  • to review past sessions/trajectories and distill recurring tasks
  • to consolidate feedback into CLAUDE.md or a managed skill
  • to schedule the cycle (cron) or adopt a staged proposal

The cycle (six stages)

  1. Harvest — read ~/.claude/projects/*/<session>.jsonl + ~/.claude/history.jsonl (READ-ONLY) → session digests.
  2. Mine — digests → TaskRecords (recurring intents + outcome labels + checkable refs where possible).
  3. Replay — re-run tasks offline under the current skill+memory → (hard, soft) scores.
  4. Consolidate — reflect on failures → propose bounded edits → gate on a held-out slice; accept only if it strictly improves.
  5. Stage — write proposed_CLAUDE.md, proposed_SKILL.md, a diff, and report.md into <project>/.skillopt-sleep/staging/<date>/. Nothing live changes.
  6. Adopt — explicit (or opt-in auto): copy staged files over live ones, backing up first.

How to drive it

Prefer the /skillopt-sleep command. Under the hood it calls the bundled runner:

"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" status                       # what's happened
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" dry-run --project "$(pwd)"    # safe preview
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" run --project "$(pwd)"        # full cycle, stages a proposal
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" adopt --project "$(pwd)"      # apply staged proposal (with backup)
  • Default backend is mock (deterministic, no API spend) — good for trying the plumbing.
  • Add --backend claude or --backend codex to spend the user's real budget for genuine improvement.
  • Scope defaults to the invoked project; --scope all harvests every project.
Scheduling
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" schedule --project "$(pwd)" --hour 3 --minute 17
"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" unschedule --project "$(pwd)"

Installs a nightly cron entry. unschedule --all removes every managed entry.

All CLI flags

Flag Default Description
--project PATH cwd Project directory to evolve
--scope all|invoked invoked Harvest scope
--backend mock|claude|codex|copilot mock Replay backend (mock = no API spend)
--model NAME backend default Override the model used for replay
--source claude|codex|auto claude Transcript source
--lookback-hours N 72 Harvest window
--max-sessions N unlimited Cap harvested sessions
--max-tasks N 40 Cap mined tasks
--target-skill-path PATH auto Explicit SKILL.md to evolve
--tasks-file PATH — Reviewed TaskRecord JSON (skip harvest)
--progress off Print phase progress to stderr
--auto-adopt off Auto-adopt if gate passes
--edit-budget N 4 Max bounded edits per night
--json off Machine-readable JSON output

Config keys (~/.skillopt-sleep/config.json)

Beyond the CLI flags, advanced behavior is controlled via config:

  • preferences — free-text house rules injected into the optimizer's reflect step (e.g. "Always use async/await", "Answers in \boxed{}").
  • gate_mode — on (default, validation-gated) or off (greedy, accept all edits).
  • gate_metric — hard, soft, or mixed (default). Controls how the held-out gate scores.
  • dream_rollouts — >1 enables multi-rollout contrastive reflection per task.
  • recall_k — >0 recalls K similar past tasks into the dream (long-term memory).
  • evolve_memory / evolve_skill — independently toggle CLAUDE.md vs SKILL.md consolidation.

Memory consolidation

The sleep cycle can consolidate both:

  • SKILL.md — the managed skill file (bounded edits: add/delete/replace)
  • CLAUDE.md — the project memory (same bounded edits)

Both are gated by the same held-out validation score. Set evolve_memory: false to consolidate only skills, or evolve_skill: false for only memory.

Hard rules

  • Never hand-edit the user's CLAUDE.md / SKILL.md as part of this skill. Only the adopt action changes live files, and it backs them up first.
  • Harvest is read-only. mock replay has no side effects.
  • Always show the user the held-out baseline → candidate score and the exact proposed edits before suggesting adoption. Evidence before adoption.
  • If asked whether it really helps, run python -m skillopt_sleep.experiments.run_experiment --persona researcher --json — a deterministic demo that proves held-out lift and that the gate blocks harmful edits.

Validate / demo

# deterministic proof (no API): held-out score rises, gate blocks regressions
python -m skillopt_sleep.experiments.run_experiment --persona researcher --assert-improves
python -m skillopt_sleep.experiments.run_experiment --persona programmer  --assert-improves

See the upstream SkillOpt-Sleep guide section (https://microsoft.github.io/SkillOpt/docs/guideline.html#sleep) for recorded output and the full design. (The original repo-relative design-doc path, docs/superpowers/specs/..., is not vendored into this repo — see this skill's README.md "What was and wasn't vendored" table.)

1---
2name: skillopt-sleep
3description: "Use when the user wants their Claude agent to self-improve from past usage, asks about a nightly/offline 'sleep' or 'dream' cycle, memory/skill consolidation, or says things like 'make my agent better the more I use it', 'review my past sessions', 'learn my preferences', 'consolidate what you learned', 'run the sleep cycle', or wants to schedule offline self-optimization. Drives the skillopt_sleep engine: harvest past sessions -> mine recurring tasks -> replay offline -> consolidate validated CLAUDE.md and SKILL.md behind a held-out gate."
4---
5 
6# SkillOpt-Sleep: offline self-evolution for a local Claude agent
7 
8SkillOpt-Sleep gives the user's agent a **sleep cycle**. While the user is
9offline (e.g. nightly), it reviews their real past Claude Code sessions,
10re-runs recurring tasks on their own API budget, and consolidates what it
11learns into **memory** (`CLAUDE.md`) and **skills** (`SKILL.md`) — but only
12keeps changes that pass a held-out validation gate, and only after the user
13adopts them. The agent gets measurably better at *this* user's recurring work,
14with no model-weight training. It is the deployment-time analogue of training:
15short-term experience → long-term competence.
16 
17It synthesizes three ideas:
18- **SkillOpt** — the skill/memory doc is trainable text; bounded add/delete/replace
19 edits; accepted only through a held-out gate; rejected edits become negative feedback.
20- **Claude Dreams** — offline consolidation that reads past sessions and rebuilds
21 memory (dedup/merge/resolve); the input is never mutated; output is reviewed then adopted.
22- **Agent sleep** — periodic offline replay turns episodes into durable skill.
23 
24## When to use this skill
25 
26Trigger when the user wants any of:
27- "make my agent learn from how I use it" / "get better the more I use it" / "remember my preferences across sessions"
28- a nightly/scheduled or on-demand **offline self-improvement / dream / sleep** run
29- to **review past sessions/trajectories** and distill recurring tasks
30- to **consolidate** feedback into `CLAUDE.md` or a managed skill
31- to **schedule** the cycle (cron) or **adopt** a staged proposal
32 
33## The cycle (six stages)
34 
351. **Harvest** — read `~/.claude/projects/*/<session>.jsonl` + `~/.claude/history.jsonl` (READ-ONLY) → session digests.
362. **Mine** — digests → `TaskRecord`s (recurring intents + outcome labels + checkable refs where possible).
373. **Replay** — re-run tasks offline under the *current* skill+memory → (hard, soft) scores.
384. **Consolidate** — reflect on failures → propose bounded edits → **gate** on a held-out slice; accept only if it strictly improves.
395. **Stage** — write `proposed_CLAUDE.md`, `proposed_SKILL.md`, a diff, and `report.md` into `<project>/.skillopt-sleep/staging/<date>/`. **Nothing live changes.**
406. **Adopt** — explicit (or opt-in auto): copy staged files over live ones, backing up first.
41 
42## How to drive it
43 
44Prefer the `/skillopt-sleep` command. Under the hood it calls the bundled runner:
45 
46```bash
47"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" status # what's happened
48"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" dry-run --project "$(pwd)" # safe preview
49"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" run --project "$(pwd)" # full cycle, stages a proposal
50"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" adopt --project "$(pwd)" # apply staged proposal (with backup)
51```
52 
53- Default backend is `mock` (deterministic, **no API spend**) — good for trying the plumbing.
54- Add `--backend claude` or `--backend codex` to spend the user's real budget for genuine improvement.
55- Scope defaults to the invoked project; `--scope all` harvests every project.
56 
57### Scheduling
58 
59```bash
60"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" schedule --project "$(pwd)" --hour 3 --minute 17
61"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" unschedule --project "$(pwd)"
62```
63 
64Installs a nightly cron entry. `unschedule --all` removes every managed entry.
65 
66## All CLI flags
67 
68| Flag | Default | Description |
69|------|---------|-------------|
70| `--project PATH` | cwd | Project directory to evolve |
71| `--scope all\|invoked` | invoked | Harvest scope |
72| `--backend mock\|claude\|codex\|copilot` | mock | Replay backend (mock = no API spend) |
73| `--model NAME` | backend default | Override the model used for replay |
74| `--source claude\|codex\|auto` | claude | Transcript source |
75| `--lookback-hours N` | 72 | Harvest window |
76| `--max-sessions N` | unlimited | Cap harvested sessions |
77| `--max-tasks N` | 40 | Cap mined tasks |
78| `--target-skill-path PATH` | auto | Explicit SKILL.md to evolve |
79| `--tasks-file PATH` | — | Reviewed TaskRecord JSON (skip harvest) |
80| `--progress` | off | Print phase progress to stderr |
81| `--auto-adopt` | off | Auto-adopt if gate passes |
82| `--edit-budget N` | 4 | Max bounded edits per night |
83| `--json` | off | Machine-readable JSON output |
84 
85## Config keys (`~/.skillopt-sleep/config.json`)
86 
87Beyond the CLI flags, advanced behavior is controlled via config:
88 
89- **`preferences`** — free-text house rules injected into the optimizer's reflect step (e.g. "Always use async/await", "Answers in `\boxed{}`").
90- **`gate_mode`** — `on` (default, validation-gated) or `off` (greedy, accept all edits).
91- **`gate_metric`** — `hard`, `soft`, or `mixed` (default). Controls how the held-out gate scores.
92- **`dream_rollouts`** — >1 enables multi-rollout contrastive reflection per task.
93- **`recall_k`** — >0 recalls K similar past tasks into the dream (long-term memory).
94- **`evolve_memory`** / **`evolve_skill`** — independently toggle CLAUDE.md vs SKILL.md consolidation.
95 
96## Memory consolidation
97 
98The sleep cycle can consolidate both:
99- **SKILL.md** — the managed skill file (bounded edits: add/delete/replace)
100- **CLAUDE.md** — the project memory (same bounded edits)
101 
102Both are gated by the same held-out validation score. Set `evolve_memory: false` to consolidate only skills, or `evolve_skill: false` for only memory.
103 
104## Hard rules
105 
106- **Never** hand-edit the user's `CLAUDE.md` / `SKILL.md` as part of this skill.
107 Only the `adopt` action changes live files, and it backs them up first.
108- Harvest is read-only. `mock` replay has no side effects.
109- Always show the user the **held-out baseline → candidate** score and the
110 exact proposed edits before suggesting adoption. Evidence before adoption.
111- If asked whether it really helps, run
112 `python -m skillopt_sleep.experiments.run_experiment --persona researcher --json`
113 — a deterministic demo that proves held-out lift and that the gate blocks
114 harmful edits.
115 
116## Validate / demo
117 
118```bash
119# deterministic proof (no API): held-out score rises, gate blocks regressions
120python -m skillopt_sleep.experiments.run_experiment --persona researcher --assert-improves
121python -m skillopt_sleep.experiments.run_experiment --persona programmer --assert-improves
122```
123 
124See the upstream SkillOpt-Sleep guide section
125(https://microsoft.github.io/SkillOpt/docs/guideline.html#sleep) for recorded
126output and the full design. (The original repo-relative design-doc path,
127`docs/superpowers/specs/...`, is not vendored into this repo — see this
128skill's README.md "What was and wasn't vendored" table.)
129 
View all files on GitHub →

Details

Updated
Aug 30, 2026
License
MIT
Stars on the repo
★ 26,349
Checked
Source
alirezarezvani/claude-skills ↗
Creator
alirezarezvani · 363 listings
View creator

Similar skills

See all →
SkillTests in real browsers via Chrome DevTools MCPBrowser testing with devtoolsaddyosmani/agent-skills · by addyosmaniTests in real browsers via Chrome DevTools MCP. Use when building or debugging anything that runs in a browser. Use when you need to inspect the DOM, capture console errors, analyze network requests, profile performance, or verify visual output with real runtime data. Requires the chrome-devtools MCP server to be configured.★ 98.7k GitHub starsMCPThis MCP server attempts to exercise all the featuresEverything MCP Servermodelcontextprotocol/servers · by modelcontextprotocolThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test…★ 90.5k GitHub starsMCPA Model Context Protocol server that provides web contentFetch MCP Servermodelcontextprotocol/servers · by modelcontextprotocolA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content…★ 90.5k GitHub starsMCPNode.js server implementing Model Context ProtocolFilesystem MCP Servermodelcontextprotocol/servers · by modelcontextprotocolNode.js server implementing Model Context Protocol (MCP) for filesystem operations.★ 90.5k GitHub starsSkillAbout libraries, frameworks, API referencesContext7 MCPupstash/context7 · by upstashThis skill should be used when the user asks about libraries, frameworks, API references, or needs code examples. Activates for setup questions, code generation involving libraries, or mentions of specific frameworks like React, Vue, Next.js, Prisma, Supabase, etc.★ 62.3k GitHub starsSkillUses Chrome DevTools via MCP for efficient debuggingChromeDevTools/chrome-devtools-mcp · by ChromeDevToolsUses Chrome DevTools via MCP for efficient debugging, troubleshooting and browser automation. Use when debugging web pages, automating browser interactions, analyzing performance, or inspecting network requests. This skill does not apply to `--slim` mode (MCP configuration).★ 52.4k GitHub stars

More from alirezarezvani

SkillResume a paused experiment/ar:ar-resume — Resume Experimentalirezarezvani/claude-skills · by alirezarezvaniResume a paused experiment. Checkout the experiment branch, read results history, continue iterating. Use when the user runs /ar:ar-resume or asks to pick up a previously started autoresearch experiment.★ 26.3k GitHub starsSkillShow experiment dashboard with results, active loops/ar:ar-status — Experiment Dashboardalirezarezvani/claude-skills · by alirezarezvaniShow experiment dashboard with results, active loops, and progress. Use when the user runs /ar:ar-status or asks how an autoresearch experiment is going.★ 26.3k GitHub starsSkillStart an autonomous experiment loop with user-selected/ar:loop — Autonomous Experiment Loopalirezarezvani/claude-skills · by alirezarezvaniStart an autonomous experiment loop with user-selected interval (10min, 1h, daily, weekly, monthly). Uses CronCreate for scheduling. Use when the user runs /ar:loop or asks to run an autoresearch experiment continuously on a schedule.★ 26.3k GitHub starsSkillRun a single experiment iteration/ar:run — Single Experiment Iterationalirezarezvani/claude-skills · by alirezarezvaniRun a single experiment iteration. Edit the target file, evaluate, keep or discard. Use when the user runs /ar:run or asks for one manual autoresearch iteration.★ 26.3k GitHub starsSkillSet up a new autoresearch experiment interactively/ar:setup — Create New Experimentalirezarezvani/claude-skills · by alirezarezvaniSet up a new autoresearch experiment interactively. Collects domain, target file, eval command, metric, direction, and evaluator. Use when the user runs /ar:setup or asks to start optimizing a file with the autoresearch loop.★ 26.3k GitHub starsSkill/cs:boardroom <brief/cs:boardroom — Multi-Role Boardroom Deliberationalirezarezvani/claude-skills · by alirezarezvani/cs:boardroom <brief> — 6-phase multi-role deliberation across the C-suite with Phase 2 isolation, critic pre-screen, and synthesis. Outputs a board memo. Use when a decision spans multiple executive domains — e.g. a pricing change touching finance, positioning, and product, or a raise-vs-cut runway call.★ 26.3k GitHub stars