Skills

The distill skill

Distill each finished day into a daily record in your Life folder. New people, projects, organizations, and tools are written there too.

distill is how your agent writes the daily record in your Life folder. It looks at the day you actually had, then writes what happened. No judgment, no filling in the blanks.

The skill name is distill-my-life. Install it from LUCI or from the Luci-skills repo. The first run creates your Life folder if it is missing. You do not run a separate setup skill.

When to use it

In Claude Code, Cursor, or Codex, say "distill", "distill my life", "catch up on daily reports", or "summarize the last few days." From the Luci-skills plugin, you can also run /luci:distill-my-life.

The agent only writes finished days (yesterday and earlier). It never writes today. If a day already has a record, it skips that day. If more than seven days are missing, it writes the most recent seven and lists the rest.

What it writes

On the first run it creates ~/.Life (Windows: %USERPROFILE%\.Life) if needed:

  • reflections/daily/YYYY-MM-DD.md — one page per finished day
  • entities/people, orgs, projects, tools — a file per name the day actually showed

New people, organizations, projects, and tools are written as they appear. The agent does not ask first. An existing file gets one more dated line. It does not invent, and it does not rewrite a file that is already there.

If ~/.Life/CLAUDE.md or ~/.Life/AGENTS.md already has writing rules, those are used.

Original skill

This is the distill-my-life skill as published in Luci-skills.

markdown
---
name: distill-my-life
title: Daily Distiller
category: memory
description: Distill each day's raw activity into a daily report. Ensures ~/.Life exists, pulls the day's activity via Luci, writes an objective report under ~/.Life/reflections/daily/, and writes new entities under ~/.Life/entities/. Use when the user says "distill", "distill my life", "catch up on daily reports", "summarize the last few days", or first needs the life folders created.
---
 
# Distill — daily distillation
 
## Step 0: ensure the life file system
 
The life file system is always under the user's home directory, never
the current repo:
 
- macOS / Linux: `~/.Life`
- Windows: `%USERPROFILE%\.Life`
 
Create `~/.Life` if it does not exist. Then ensure this layout:
 
```
~/.Life/
  reflections/daily/          # daily reports (YYYY-MM-DD.md)
  entities/
    people/                   # people
    orgs/                     # organizations
    projects/                 # projects
    tools/                    # software tools
```
 
Create any missing directory. Do not ask first. Do not delete or move
anything that is already there. Do not write into the current working
directory.
 
Then look for a file-system index inside `~/.Life` only:
 
- If `~/.Life/CLAUDE.md` exists, use it.
- Else if `~/.Life/AGENTS.md` exists, use it.
- If neither exists, continue with the defaults in this skill (English,
  hourly blocks, no external send). Do not create an index file.
 
If the index exists, follow its **writing rules**, **daily-report format**,
and **external connector config**. Missing keys fall back to the defaults
above.
 
## Step 1: decide which days to process
 
- Get today's date via Bash (never guess from memory).
- Range: **from the last distillation to yesterday**. "Last distillation" is
  the date in the newest filename under `~/.Life/reflections/daily/`; if the
  directory is empty, start from the earliest day that has data.
- Only complete days — yesterday and earlier. **Never process today.**
- Only fill in dates still missing a report under `~/.Life/reflections/daily/`;
  skip existing ones.
- If the backlog exceeds 7 days, process only the most recent 7 and list
  the skipped dates explicitly at the end.
- A day with no data at all gets a minimal "no data" report (one line).
  **Never fabricate.**
 
## Step 2: summarize each day
 
For each day, pull that day's activity via Luci and write
`~/.Life/reflections/daily/YYYY-MM-DD.md`:
 
- **Divide the day into hourly blocks.** Align screen activity and real-time
  transcription (meeting/voice transcripts) by timestamp before summarizing —
  the two sources must corroborate each other, not be written up separately.
- Purely objective description: what was done, what tools were used, who was
  interacted with. No judgment, no extrapolation, no advice.
- If the source is uncertain, leave it out.
- **Mandatory caveat**: screen-memory only samples while the **screen is
  on**; daytime gaps are usually offline meetings, commuting, or sleep, so
  **screen time is an underestimate**. State this in every report, and never
  read a gap as "not working."
- Close with **one honest sentence**: an honest observation grounded in real
  data (sleep schedule, late nights, context-switch density). Tell the
  truth — no sugarcoating, no platitudes.
 
## Step 3: write new entities
 
While summarizing, watch for **people, organizations, projects, and
software tools**.
 
Read `~/.Life/entities/` first. Write every entity that appeared in that
day's evidence — do not ask:
 
- people → `~/.Life/entities/people/<slug>.md`
- organizations → `~/.Life/entities/orgs/<slug>.md`
- projects → `~/.Life/entities/projects/<slug>.md`
- software tools → `~/.Life/entities/tools/<slug>.md`
 
New file: a `# Name` heading and one `- YYYY-MM-DD: context` bullet.
Existing file: append a bullet. Never invent. Never rewrite.
 
## Final output
 
- Which folders were created in Step 0, if any.
- Which days got reports (list the file paths).
- Which dates were skipped and why.
- Which entity files were written or appended (if any).
- If an external connector is configured in `~/.Life/CLAUDE.md` or
  `~/.Life/AGENTS.md`, send one summary message through it (exactly one
  per run); if not configured, send nothing.

Was this page helpful?