You've run manual sleep cycles. Now automate them: install a nightly cron, monitor skill evolution over weeks, and know when to intervene (reset, prune, or retrain). The goal is zero-maintenance skill improvement — the agent gets better while you sleep.
SkillOpt-Sleep ships a scheduler:
# Install a nightly cron entry for this project
skillopt-sleep schedule
# Verify it was installed
crontab -l | grep skillopt
By default this runs at 2:00 AM local time. The cycle harvests today's sessions, runs
the consolidation pipeline, and stages a proposal. It does not auto-adopt —
you still review and explicitly run skillopt-sleep adopt.
If you trust the gate fully, you can enable auto-adopt:
skillopt-sleep schedule --auto-adopt. The gate is your safety net — if
a proposal doesn't improve held-out accuracy, it's rejected regardless. Auto-adopt
just means you skip the manual review step for proposals that pass the gate.
After a week of nightly runs, check the history:
# See the full history of proposals, acceptances, and rejections
skillopt-sleep status --history
# See held-out score over time
skillopt-sleep status --scores
What to look for:
| Pattern | Meaning | Action |
|---|---|---|
| Scores climbing steadily | The system is working — skill is improving | Keep running, maybe increase recall_k |
| Scores flat for 5+ nights | Plateau — the current task set is saturated | Add new tasks to your data, or increase edit budget |
| All proposals rejected for 5+ nights | The optimizer can't find improvements | You may be at ceiling for this task domain |
| Score dropped after an adopt | Should be impossible if gate is on — investigate | Check if your test split changed, or rollback the adopt |
Over weeks, your skill will grow. Here's when to intervene:
If the skill exceeds ~2000 words, older rules may be obsolete (your workflow changed, tools updated). Review the oldest rules — do they still apply? Remove ones that don't. The gate will re-learn anything still relevant on the next cycle.
If your task domain fundamentally changes (new language, new project, new tools), the accumulated skill may be counterproductive. Reset to a minimal seed and let the system retrain from scratch:
# Archive the current skill
cp ~/.pi/skills/best_skill.md ~/.pi/skills/best_skill_$(date +%Y%m%d).bak
# Reset to minimal seed
echo "# Coding Skill\nFollow project conventions." > ~/.pi/skills/best_skill.md
If your domain is stable and scores are still climbing (even slowly), let it run. The validation gate prevents degradation — accumulation is safe as long as the gate is on.
Get notified when a proposal is staged for review:
# Add to your cron entry or a wrapper script:
skillopt-sleep run && \
skillopt-sleep status --latest | \
mail -s "SkillOpt: proposal staged" you@example.com
Or pipe to a Slack webhook, desktop notification, or whatever fits your workflow.
SkillOpt-Sleep README — "How to use it" section — the schedule command, auto-adopt, and the per-agent plugin shells. ~5 minutes.