
SkillOpt-Sleep
FreeEnhance your Claude agent's performance while you rest.
Free · Opens the source repo
What SkillOpt-Sleep does
SkillOpt-Sleep is designed for users who want their Claude agent to improve autonomously during offline periods. This skill enables the agent to undergo a 'sleep cycle' where it reviews past interactions, consolidates knowledge, and refines its skills based on user preferences. By leveraging historical session data, the agent can identify recurring tasks and optimize its performance without requiring direct input during the process. This self-improvement mechanism is particularly beneficial for users who engage in repetitive tasks or seek to enhance their agent's understanding of their unique workflow.
The skill operates through a structured six-stage cycle, starting with the harvesting of past session data. It reads from session logs and history files to create session digests, which are then analyzed to extract recurring tasks. The agent replays these tasks offline, scoring its performance and reflecting on any failures. Proposed edits to the agent's memory and skills are only accepted if they improve performance, ensuring that the learning process is both effective and safe. Users can schedule these sleep cycles to run automatically, allowing for seamless integration into their workflow.
SkillOpt-Sleep is particularly useful for developers and designers who rely on Claude for coding tasks or design work. By allowing the agent to learn from past interactions, users can expect a more tailored experience that evolves over time. The skill is also beneficial for those who want to maintain a high level of control over the learning process, as it provides options for staging and reviewing changes before they are adopted. With the ability to consolidate both memory and skills, this tool ensures that the agent becomes increasingly competent in handling the user's specific needs.
When to use it
Use this skill when you want your agent to learn from past sessions and improve autonomously during offline periods, such as overnight.
When not to use it
This skill may not be suitable for users who require immediate feedback or real-time adjustments, as it operates during offline cycles and does not provide instant updates.
What you can build with it
Nightly Self-Improvement
Schedule the sleep cycle to run every night, allowing your agent to learn from the day's interactions and improve for the next session.
Review Past Sessions
Use the skill to analyze and consolidate feedback from previous sessions, ensuring your agent becomes more effective in handling recurring tasks.
Controlled Learning Process
Stage proposed changes before adopting them, giving you control over how your agent evolves based on your preferences.
How to install SkillOpt-Sleep
View source1. Install with the skills CLI
npx skills add alirezarezvani/claude-skills/skillopt-sleep --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by alirezarezvaniSkillOpt-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.mdor a managed skill - to schedule the cycle (cron) or adopt a staged proposal
The cycle (six stages)
- Harvest — read
~/.claude/projects/*/<session>.jsonl+~/.claude/history.jsonl(READ-ONLY) → session digests. - Mine — digests →
TaskRecords (recurring intents + outcome labels + checkable refs where possible). - Replay — re-run tasks offline under the current skill+memory → (hard, soft) scores.
- Consolidate — reflect on failures → propose bounded edits → gate on a held-out slice; accept only if it strictly improves.
- Stage — write
proposed_CLAUDE.md,proposed_SKILL.md, a diff, andreport.mdinto<project>/.skillopt-sleep/staging/<date>/. Nothing live changes. - 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 claudeor--backend codexto spend the user's real budget for genuine improvement. - Scope defaults to the invoked project;
--scope allharvests 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) oroff(greedy, accept all edits).gate_metric—hard,soft, ormixed(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.mdas part of this skill. Only theadoptaction changes live files, and it backs them up first. - Harvest is read-only.
mockreplay 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.)
Frequently asked questions about SkillOpt-Sleep
Similar skills
Skill Creator
Efficiently create and manage skills for Gemini CLI.
Agent Development
Create and manage autonomous agents for Claude Code.
Math Olympiad Solver
Solve and verify competition math problems effectively.
Microsoft Skill Creator
Create specialized skills for Microsoft technologies.
Doublecheck
A verification pipeline for AI-generated claims.
Skill Development for Claude Code
Create and enhance skills for Claude Code plugins.
