Install
openclaw skills install life-stateDaily mood / energy / soreness / sleep capture primitive. Other lifekit skills read this to make state-aware suggestions instead of generic templates.
openclaw skills install life-stateA boring, durable state primitive. NOT a chat experience — it's the integration glue that lets other skills (morning_brief, future workout suggester, bedtime brief) adapt to your current state instead of returning the same template every day.
User describes how they feel, their energy level, soreness, or sleep quality. Examples:
Use the life-state CLI via Bash. YAML output to stdout.
life-state set --mood tired --energy 4 --sore chest,triceps --sleep poor --note "headache, late night"
Flags (all optional, at least one required):
--mood <m> — great | good | normal | tired | terrible (freeform accepted; lowercased)--energy <n> — 1-10 (rejected outside that range)--sleep <q> — good | ok | poor (freeform accepted)--sore <list> — comma-separated muscle groups (e.g. chest,triceps)--note "<text>" — free-text annotation--date YYYY-MM-DD — override (default: today)Merge semantics: calling set twice on the same day updates only the fields passed. Morning check-in + post-workout check-in compose cleanly.
life-state get
life-state get --date 2026-05-15
life-state week # last 7 days
life-state week --days 14 # last 14 days
Returns avg energy, mood histogram, top soreness areas, and per-day rollup.
~/.life/state/<date>.json — one JSON file per day. Stable, known location every other lifekit skill should read from.
Schema:
{
"date": "2026-05-15",
"mood": "tired",
"energy": 4,
"soreness": ["chest", "triceps"],
"sleep_quality": "poor",
"note": "headache, late night",
"updated_at": "2026-05-15T19:30:00.000Z"
}
morning_brief, not here.--mood tired --energy 4. "sore chest and triceps" → --sore chest,triceps.--energy. Don't wipe morning mood.morning_brief: read yesterday's sleep_quality + today's energy to vary breakfast / day prepenergy + soreness to adapt volumenote to tailor wind-down