# StateLog

State journaling from shorthand like M4, H2, CF5 (H overall, M mood, E energy, S sleep...

- Repository: https://github.com/danielmiessler/LifeOS (19669 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-28
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add danielmiessler/LifeOS --skill StateLog -g -a claude-code -y`
Codex: `npx skills add danielmiessler/LifeOS --skill StateLog -g -a codex -y`
Cursor: `npx skills add danielmiessler/LifeOS --skill StateLog -g -a cursor -y`
Gemini CLI: `npx skills add danielmiessler/LifeOS --skill StateLog -g -a gemini-cli -y`

## Description

State journaling from shorthand like M4, H2, CF5 (H overall, M mood, E energy, S sleep, R relationships, F financial, C creativity, CF creative freedom, W workout, K walk, A affirmation) on 1-5, with freshness resets. USE WHEN a message is only dimension shorthand (M4, e4 cf3, W, K, A), log my state, log my mood, state check-in, how am I tracking, just worked out, went for a walk, did my affirmations. NOT FOR life-goal percentages (use `Telos`), health imports, macOS stats (Vitals).

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# StateLog

**Contents:** Ideal State · Intent Routing · The grammar · Data & Config · Tool contract · Gotchas · Examples

Two keystrokes to a durable journal entry. The user sends `M2` on any channel; it lands timestamped in the state log and the statusline reflects it. The point is zero-friction capture of mood and state so correlations (mood vs sleep vs workouts) become computable later.

## Ideal State

- Every entry the user states lands in the log in one tool call and gets one short acknowledgment, with no follow-up questions or analysis.
- Ratings come only from the user's own words; inferred events reset freshness counters and never write a rating.
- A status read shows each dimension's latest value and age, and names what is stale or never logged in one line.
- The journal stays the user's: it lives under `LIFEOS/USER/STATE/` and never enters this skill or any public artifact.

## Intent Routing

| Intent | Trigger | File |
|--------|---------|------|
| **Log** | A shorthand entry, "log my state/mood", "just worked out", "went for a walk" | `Intents/Log.md` |
| **Status** | "current state", "state check-in", "how am I tracking" | `Intents/Status.md` |

| File | Read when |
|------|-----------|
| `Setup.md` | first-time setup, or `Config.md` is missing |
| `EvalState.md` | checking the `state-shorthand` eval suite's latest scores (machine-owned, never hand-edited) |

## The grammar

`<Letter><Digit 1-5>` plus optional note (`M2 slept badly`). Bare `W` or `K` resets that freshness counter.

| Letter | Dimension | Kind |
|--------|-----------|------|
| H | overall | rating 1-5 |
| M | mood | rating 1-5 |
| E | energy | rating 1-5 |
| S | sleep | rating 1-5 |
| R | relationships | rating 1-5 |
| F | financial | rating 1-5 |
| C | overall creativity | rating 1-5 |
| CF | creative freedom | rating 1-5 |
| W | workout | freshness (days-since) |
| K | walk | freshness (days-since) |
| A | affirmation | freshness (days-since) |

The rest: https://github.com/danielmiessler/LifeOS/blob/HEAD/LifeOS/install/skills/StateLog/SKILL.md
