4.3 KiB
description, argument-hint, allowed-tools
| description | argument-hint | allowed-tools |
|---|---|---|
| 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) | [run | dry-run | status | adopt | harvest | schedule | unschedule] (default: status) | 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
- Run the requested action via the bundled runner above. Capture stdout and stderr.
- For
run: if it prints a staging directory,Readitsreport.mdand 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
- For
dry-run: no staging directory orreport.mdis created. Summarize the score, gate decision, and edits from stdout (or request--jsonwhen machine-readable output is useful). - For
runthat 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. - For
adopt: confirm which live files were updated and that backups were written under the staging dir'sbackup/. - Never edit
CLAUDE.mdorSKILL.mdyourself — let the engine's explicitadoptor user-requested--auto-adoptpath apply its manifest and backup behavior. Respect the review gate.
Safety reminders
- Harvest is read-only over
~/.claude. Replay inmockmode 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
mockor first runharvest --output <file>, review/redact the file, set"reviewed": true, and then pass it with--tasks-file. schedulemanages a cron entry whencrontabis available; otherwise it prints a line for manual installation.