Extract distilled actions and facts from today's conversations. Spawns sub-agents per conversation to avoid context blowup.
View on GitHubSelect agents to install to:
npx add-skill https://github.com/ascorbic/macrodata/blob/main/plugins/macrodata/skills/distill/SKILL.md -a claude-code --skill distillInstallation paths:
.claude/skills/distill/# Distill Conversations
Process today's conversations to extract actionable knowledge. This is the core of memory consolidation.
**Important:** This runs as a coordinator. Spawn sub-agents for each conversation file to avoid loading full transcripts into your context.
## Process
### 1. Find Today's Conversations
List conversation files modified today:
```bash
find ~/.claude/projects -name "*.jsonl" -mtime -1 -type f 2>/dev/null
```
### 2. Process Each Conversation
For **each** conversation file, spawn a sub-agent with the Task tool:
```
Task(subagent_type="general-purpose", prompt=`
Read the conversation at {path}.
Filter to actual conversation content:
- Include: human messages, assistant text responses
- Exclude: tool calls, tool results, system messages, thinking blocks
Extract and return as JSON:
{
"distilled_actions": [
{
"summary": "Fixed auth bug in src/auth.ts where token refresh was racing",
"files": ["src/auth.ts"],
"outcome": "Added mutex lock around refresh"
}
],
"facts": [
{
"topic": "project-name",
"content": "Uses JWT tokens with 15min expiry"
},
{
"topic": "person-name",
"content": "Prefers explicit error handling over try/catch"
}
],
"decisions": [
"Chose Redis over in-memory cache for session storage because of multi-instance deployment"
]
}
Focus on:
- What was accomplished (not just discussed)
- Decisions made and their rationale
- New information about projects, people, or preferences
- File paths and specific technical details that should survive compression
Return ONLY the JSON, no explanation.
`)
```
### 3. Collect and Write Results
After all sub-agents complete:
**Write distilled actions to journal:**
```
For each action in all results:
log_journal(topic="distilled", content=action.summary + " Files: " + action.files.join(", "))
```
**Write overall summary to journal:**
```
log_journal(topic="distill-summary", content="Processed N conversatio