Skip to content
Development
Command

/skillopt-sleep

Run or manage the SkillOpt-Sleep self-evolution cycle (review past sessions, replay tasks through a selected backend, consolidate validated memory + skills, or schedule nightly runs)

From plugin
skillopt
16k2 skills2 commands
Install
$ npx -y skills add microsoft/SkillOpt --agent claude-code

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/skillopt-sleep

Context preview

What this command does when you run it.

Run or manage the SkillOpt-Sleep self-evolution cycle (review past sessions, replay tasks through a selected backend, consolidate validated memory + skills, or schedule nightly runs)

Command definition

skillopt-sleep.md
description: Run or manage the SkillOpt-Sleep self-evolution cycle (review past sessions, replay tasks through a selected backend, consolidate validated memory + skills, or schedule nightly runs)
argument-hint: "[run | dry-run | status | adopt | harvest | schedule | unschedule] (default: status)"
allowed-tools: Bash, Read

/skillopt-sleep — SkillOpt-Sleep nightly self-evolution

You are driving **SkillOpt-Sleep**: a tool that lets this user's Claude agent improve from past usage by reviewing sessions, replaying recurring tasks, and consolidating what it learns into **validated** memory (`CLAUDE.md`) and skills (`SKILL.md`). With the default gate enabled, a change is kept only if it improves a held-out replay score. Nothing live is modified until adoption unless the user explicitly requests `--auto-adopt`.

Requested action: $ARGUMENTS

(If `$ARGUMENTS` is empty, treat it as `status`.)

How to run it

The engine is the `skillopt_sleep` Python package in this repo. Split `$ARGUMENTS` into the first action token and its remaining options, then use the **plugin's bundled runner** so the right interpreter and repo are on the path. Preserve the user's remaining options (for example `--preferences`, `--backend`, or `--target-skill-path`) instead of silently dropping them:

"${CLAUDE_PLUGIN_ROOT}/scripts/sleep.sh" <action> --project "$(pwd)" --scope invoked <remaining options>

`<action>` is one of:

| action | what it does | |--------------|--------------| | `status` | show how many nights have run + the latest staged proposal (READ-ONLY) | | `dry-run` | harvest → mine → replay → report, but **stage nothing** (no-staging preview) | | `run` | full cycle: **stage** a validation report and any accepted proposal; only explicit `--auto-adopt` may also update live files | | `adopt` | apply the latest staged proposal to live `CLAUDE.md` / `SKILL.md` (backs up first) | | `harvest` | debug: print the recurring tasks mined from recent sessions | | `schedule` | install a nightly cron entry for this project (`--hour --minute`, off-:00 by default) | | `unschedule` | remove the nightly cron entry (`--all` to remove every managed entry) |

Default backend is `mock` (deterministic, no API spend). To use real budget for model-driven optimization, add `--backend claude` or `--backend codex`. An accepted gain is evidence on this run's held-out tasks, not a guarantee of general improvement; results depend on the tasks, model, and checks. To steer what the optimizer writes, add `--preferences "<your house rules>"`.

Steps to follow

1. **Run the requested action** via the bundled runner above. Capture stdout and stderr. 2. **For `run`:** if it prints a staging directory, `Read` its `report.md` and show the user:

  • held-out score: baseline → candidate (evidence on this run's held-out tasks)
  • the gate decision (accept/reject) and the exact edits it proposes
  • where the proposal is staged

3. **For `dry-run`:** no staging directory or `report.md` is created. Summarize the score, gate decision, and edits from stdout (or request `--json` when machine-readable output is useful). 4. **For `run` that produced an accepted proposal:** inspect whether stdout says it was auto-adopted. If not, tell the user nothing live changed and offer `/skillopt-sleep adopt`; if it was, report the updated paths explicitly. 5. **For `adopt`:** confirm which live files were updated and that backups were written under the staging dir's `backup/`. 6. **Never** edit `CLAUDE.md` or `SKILL.md` yourself — let the engine's explicit `adopt` or user-requested `--auto-adopt` path apply its manifest and backup behavior. Respect the review gate.

Safety reminders

  • Harvest is **read-only** over `~/.claude`. Replay in `mock` mode runs no

shell side effects.

  • The cycle stages proposals by default; auto-adoption requires explicit opt-in.
  • A real backend sends truncated transcript excerpts and derived tasks to its

provider for mining, replay, judging, and reflection. Pattern-based redaction is not a guarantee that outbound prompts are secret-free. For sensitive data, use `mock` or first run `harvest --output <file>`, review/redact the file, set `"reviewed": true`, and then pass it with `--tasks-file`.

  • `schedule` manages a cron entry when `crontab` is available; otherwise it

prints a line for manual installation.

Read more
Ships withskillopt

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

Get the whole plugin
Stats
15,815
Stars
1,467
Forks
Active
Maintenance
Python
Language
MIT
License
10h ago
Last commit
3mo ago
Created

Repo: microsoft/SkillOpt