IDENTITY: Curator.MemoryHygiene. NotesCheck→PromoteCandidates→ArchiveStale→DeleteUserOnly.
Law: NeverAutoDelete.NeverAutoPromote.AlwaysGetApproval.
WHENUSE: User says curate/cleanup/archive/notes review|Notes≥10 items|Stale≥3 days. ESPECIALLY:PromoteToWiki|ArchiveOld|NotesOverflow. NoSkip:WikilinksBeforeMove|ArchiveFirstDeleteLater|CuratorFatigueTune.
REDFLAGS: AutoDelete->ArchiveFirstApprovalGated|AutoPromote->WikiQualityNeedsReview|BrokenWikilinks->CheckBeforeMove.
RATIONALIZATIONS: FastCleanup->30DayArchiveGrace|PromoteEverything->Only3+WikiLinksOrConceptTag.
QUICKREF: NotesCheck(count+age)➔PromoteCandidates(wikilinks+tags)➔ArchiveCandidates(90+days)➔UserApproval(execute).
Memory Curator
Automates the memory hygiene workflow: monitors Inbox, triggers promotions to llm-wiki, handles archiving.
When This Skill Activates
- You ask to review, clean, or audit your memory
- You mention "notes", "archive", "promote", or "curate"
- Session ends and notes/ has 10+ items or 3+ day-old items
- Manual trigger:
curate, cleanup, archive
Configuration
Obsidian Vault Path:
OBSIDIAN_VAULT_PATH=~/Hermes Vault/Hermes
Defaults to your configured vault or prompts if unset.
Curator Rules:
| Trigger |
Threshold |
| Notes alert |
10+ items |
| Stale alert |
3+ days since modified |
| Archive alert |
90+ days since modified |
| Promote to llm-wiki |
Item has 3+ wikilinks OR is tagged concept |
Workflow
Session ends / you invoke curator
↓
Check notes/ for promotion candidates
↓
┌─────────────────────────────────────────┐
│ IF item has 3+ wikilinks │
│ OR tag: concept │
│ OR stable across 2+ sessions │
│ → Report: "Promote candidates: [...]" │
│ → Ask: "Promote to llm-wiki?" │
└─────────────────────────────────────────┘
↓
Check Fabric for high-value entries
↓
┌─────────────────────────────────────────┐
│ IF entry has training_value: high │
│ AND status: completed │
│ AND not yet promoted │
│ → Report: "Fabric candidates: [...]" │
│ → Ask: "Promote to llm-wiki?" │
└─────────────────────────────────────────┘
↓
Check for archive candidates
↓
┌─────────────────────────────────────────┐
│ IF item modified 90+ days ago │
│ → Report: "Archive candidates: [...]" │
│ → Ask: "Archive these?" │
│ → YOU decide what gets deleted │
└─────────────────────────────────────────┘
Note: The old PARA Inbox (0-Inbox/) was removed during the May 2026 consolidation. The vault is now flat: llm-wiki/, icarus/, notes/, 4-Archive/. Curator scans notes/ for promotion candidates instead of Inbox.
Core Operations
1. Inbox Check (now notes/ check)
# Count items in notes/
ls -1 "$OBSIDIAN_VAULT_PATH/notes/" | wc -l
# Find stale items (3+ days old)
find "$OBSIDIAN_VAULT_PATH/notes/" -mtime +3 -type f
# Find archive candidates (90+ days old)
find "$OBSIDIAN_VAULT_PATH/" -path "*/4-Archive/*" -mtime +90 -type f
2. Promote to llm-wiki
When you approve promotion:
- Read the source note from Inbox
- Extract entity/concept from frontmatter
- Determine if entity page or concept page
- Create/update the llm-wiki page:
- Move to
entities/ or concepts/
- Add frontmatter (type, tags, sources)
- Ensure 2+ wikilinks to existing pages
- Add to
index.md under correct section
- Append to
log.md
- Remove from Inbox
3. Archive
When you approve archive:
- Move note to
4-Archive/ with subfolder by year-month
- Update any pages linking to it → replace
[[wikilink]] with plain text + "(archived)"
- Do NOT delete — you decide what's deleted
4. Delete (Your Approval Only)
Archive → delete path:
- Note sits in
4-Archive/ for 30 days
- After 30 days, you can request "permanent delete"
- You review each file, confirm deletion
- Only then does it leave the vault entirely
Commands
| Command |
Action |
curate inbox |
Check notes/, report stats |
curate promote |
Find and propose promote candidates |
curate archive |
Find and propose archive candidates |
curate full |
Run full curator cycle (inbox + promote + archive) |
curate approve <action> |
Approve pending action (move/promote/archive) |
Division of Labor (Full Stack)
| Layer |
Task |
Who Does What |
| Mnemosyne |
Always-injected preferences & env facts |
Agent auto-writes; never trained or curated |
| Fabric (Icarus) |
Session capture, operational logging |
All agents + cron write; curator promotes from |
| LLM-Wiki |
Curated knowledge (curator target) |
Agent writes on curation approval |
| Obsidian |
Second brain (vault) |
Agent stores wiki, notes, Fabric entries; human browses/curates |
Curator-specific:
| Task |
Who Does What |
| Inbox → Wiki |
Curator scans Inbox, proposes candidates |
| Fabric → Wiki |
fabric-promote-review cron scans fabric (5am), proposes candidates |
| Review |
Curator presents options, you approve |
| Archive |
Curator moves, you review for deletion |
| Delete |
You explicitly approve |
Note: A complementary cron job fabric-promote-review (daily at 5am) scans fabric entries with status: completed and training_value: high for wiki promotion candidates. This handles the fabric → wiki pipeline, while the memory curator handles the Inbox → wiki pipeline. Both propose to the user — neither auto-creates pages. The morning briefing aggregates candidates from both sources.
Pitfalls
- Obsidian is the second brain, not just a human notebook. The agent stores the LLM-Wiki, operational notes, and Fabric entries in the vault. Mnemosyne handles hot auto-injected facts; Obsidian holds everything else. Don't treat it as "the user's space that the agent occasionally peeks at" — it's the central knowledge store.
- LCM ≠ Mnemosyne. LCM (hermes-lcm plugin) compresses session context within a single conversation. Mnemosyne (
hermes mnemosyne CLI) consolidates memories across sessions. They are separate systems — don't look for mnemosyne functionality inside LCM tools or vice versa.
- Don't auto-delete — archive first, delete only on your explicit command
- Don't auto-promote — llm-wiki quality matters; get your approval first
- Check wikilinks before move — broken links break the graph
- Curator fatigue — if alerts are too frequent, tune thresholds
sleep timeout on large DBs — background it with notify_on_complete in cron; see references/mnemosyne-cli.md for pattern
Related Skills
- llm-wiki — Karpathy-style compounding knowledge base (lives inside the vault)
- obsidian — vault operations (the second brain)
- fabric-promote-review — Full fabric→wiki promotion workflow (scan, cross-check, create, index, log, Notion)
- references/mnemosyne-cli.md —
hermes mnemosyne CLI commands, output formats, cron integration
1---2name: memory-curator3description: Automated memory curation: monitors Obsidian notes/, triggers moves/promotions, handles archiving. Works with Mnemosyne (hot layer), Icarus (operational), and llm-wiki (curated). One component of a five-layer memory stack (Mnemosyne, Fabric, LLM-Wiki, Obsidian, Skills).4---5
6IDENTITY: Curator.MemoryHygiene. NotesCheck→PromoteCandidates→ArchiveStale→DeleteUserOnly.
7Law: NeverAutoDelete.NeverAutoPromote.AlwaysGetApproval.
8WHENUSE: User says curate/cleanup/archive/notes review|Notes≥10 items|Stale≥3 days. ESPECIALLY:PromoteToWiki|ArchiveOld|NotesOverflow. NoSkip:WikilinksBeforeMove|ArchiveFirstDeleteLater|CuratorFatigueTune.
9REDFLAGS: AutoDelete->ArchiveFirstApprovalGated|AutoPromote->WikiQualityNeedsReview|BrokenWikilinks->CheckBeforeMove.
10RATIONALIZATIONS: FastCleanup->30DayArchiveGrace|PromoteEverything->Only3+WikiLinksOrConceptTag.
11QUICKREF: NotesCheck(count+age)➔PromoteCandidates(wikilinks+tags)➔ArchiveCandidates(90+days)➔UserApproval(execute).
12
13# Memory Curator
14
15Automates the memory hygiene workflow: monitors Inbox, triggers promotions to llm-wiki, handles archiving.
16
17## When This Skill Activates
18
19- You ask to review, clean, or audit your memory
20- You mention "notes", "archive", "promote", or "curate"
21- Session ends and notes/ has 10+ items or 3+ day-old items
22- Manual trigger: `curate`, `cleanup`, `archive`
23
24## Configuration
25
26**Obsidian Vault Path:**
27```
28OBSIDIAN_VAULT_PATH=~/Hermes Vault/Hermes
29```
30
31Defaults to your configured vault or prompts if unset.
32
33**Curator Rules:**
34| Trigger | Threshold |
35|---------|-----------|
36| Notes alert | 10+ items |
37| Stale alert | 3+ days since modified |
38| Archive alert | 90+ days since modified |
39| Promote to llm-wiki | Item has 3+ wikilinks OR is tagged `concept` |
40
41## Workflow
42
43```
44Session ends / you invoke curator
45 ↓
46Check notes/ for promotion candidates
47 ↓
48┌─────────────────────────────────────────┐
49│ IF item has 3+ wikilinks │
50│ OR tag: concept │
51│ OR stable across 2+ sessions │
52│ → Report: "Promote candidates: [...]" │
53│ → Ask: "Promote to llm-wiki?" │
54└─────────────────────────────────────────┘
55 ↓
56Check Fabric for high-value entries
57 ↓
58┌─────────────────────────────────────────┐
59│ IF entry has training_value: high │
60│ AND status: completed │
61│ AND not yet promoted │
62│ → Report: "Fabric candidates: [...]" │
63│ → Ask: "Promote to llm-wiki?" │
64└─────────────────────────────────────────┘
65 ↓
66Check for archive candidates
67 ↓
68┌─────────────────────────────────────────┐
69│ IF item modified 90+ days ago │
70│ → Report: "Archive candidates: [...]" │
71│ → Ask: "Archive these?" │
72│ → YOU decide what gets deleted │
73└─────────────────────────────────────────┘
74```
75
76**Note:** The old PARA Inbox (`0-Inbox/`) was removed during the May 2026 consolidation. The vault is now flat: `llm-wiki/`, `icarus/`, `notes/`, `4-Archive/`. Curator scans `notes/` for promotion candidates instead of Inbox.
77
78## Core Operations
79
80### 1. Inbox Check (now notes/ check)
81
82```bash
83# Count items in notes/
84ls -1 "$OBSIDIAN_VAULT_PATH/notes/" | wc -l
85
86# Find stale items (3+ days old)
87find "$OBSIDIAN_VAULT_PATH/notes/" -mtime +3 -type f
88
89# Find archive candidates (90+ days old)
90find "$OBSIDIAN_VAULT_PATH/" -path "*/4-Archive/*" -mtime +90 -type f
91```
92
93### 2. Promote to llm-wiki
94
95When you approve promotion:
961. Read the source note from Inbox
972. Extract entity/concept from frontmatter
983. Determine if entity page or concept page
994. Create/update the llm-wiki page:
100 - Move to `entities/` or `concepts/`
101 - Add frontmatter (type, tags, sources)
102 - Ensure 2+ wikilinks to existing pages
1035. Add to `index.md` under correct section
1046. Append to `log.md`
1057. Remove from Inbox
106
107### 3. Archive
108
109When you approve archive:
1101. Move note to `4-Archive/` with subfolder by year-month
1112. Update any pages linking to it → replace `[[wikilink]]` with plain text + "(archived)"
1123. Do NOT delete — you decide what's deleted
113
114### 4. Delete (Your Approval Only)
115
116Archive → delete path:
1171. Note sits in `4-Archive/` for 30 days
1182. After 30 days, you can request "permanent delete"
1193. You review each file, confirm deletion
1204. Only then does it leave the vault entirely
121
122## Commands
123
124| Command | Action |
125|---------|--------|
126| `curate inbox` | Check notes/, report stats |
127| `curate promote` | Find and propose promote candidates |
128| `curate archive` | Find and propose archive candidates |
129| `curate full` | Run full curator cycle (inbox + promote + archive) |
130| `curate approve <action>` | Approve pending action (move/promote/archive) |
131
132**Division of Labor (Full Stack)**
133
134| Layer | Task | Who Does What |
135|-------|------|---------------|
136| **Mnemosyne** | Always-injected preferences & env facts | Agent auto-writes; never trained or curated |
137| **Fabric (Icarus)** | Session capture, operational logging | All agents + cron write; curator promotes from |
138| **LLM-Wiki** | Curated knowledge (curator target) | Agent writes on curation approval |
139| **Obsidian** | Second brain (vault) | Agent stores wiki, notes, Fabric entries; human browses/curates |
140
141**Curator-specific:**
142
143| Task | Who Does What |
144|------|---------------|
145| **Inbox → Wiki** | Curator scans Inbox, proposes candidates |
146| **Fabric → Wiki** | fabric-promote-review cron scans fabric (5am), proposes candidates |
147| **Review** | Curator presents options, you approve |
148| **Archive** | Curator moves, you review for deletion |
149| **Delete** | You explicitly approve |
150
151**Note:** A complementary cron job `fabric-promote-review` (daily at 5am) scans fabric entries with `status: completed` and `training_value: high` for wiki promotion candidates. This handles the fabric → wiki pipeline, while the memory curator handles the Inbox → wiki pipeline. Both propose to the user — neither auto-creates pages. The morning briefing aggregates candidates from both sources.
152
153## Pitfalls
154
155- **Obsidian is the second brain, not just a human notebook.** The agent stores the LLM-Wiki, operational notes, and Fabric entries in the vault. Mnemosyne handles hot auto-injected facts; Obsidian holds everything else. Don't treat it as "the user's space that the agent occasionally peeks at" — it's the central knowledge store.
156- **LCM ≠ Mnemosyne.** LCM (hermes-lcm plugin) compresses session context within a single conversation. Mnemosyne (`hermes mnemosyne` CLI) consolidates memories across sessions. They are separate systems — don't look for mnemosyne functionality inside LCM tools or vice versa.
157- **Don't auto-delete** — archive first, delete only on your explicit command
158- **Don't auto-promote** — llm-wiki quality matters; get your approval first
159- **Check wikilinks before move** — broken links break the graph
160- **Curator fatigue** — if alerts are too frequent, tune thresholds
161- **`sleep` timeout on large DBs** — background it with `notify_on_complete` in cron; see [references/mnemosyne-cli.md](references/mnemosyne-cli.md) for pattern
162
163## Related Skills
164
165- [llm-wiki](/skills/llm-wiki) — Karpathy-style compounding knowledge base (lives inside the vault)
166- [obsidian](/skills/obsidian) — vault operations (the second brain)
167- [fabric-promote-review](/skills/fabric-promote-review) — Full fabric→wiki promotion workflow (scan, cross-check, create, index, log, Notion)
168- [references/mnemosyne-cli.md](references/mnemosyne-cli.md) — `hermes mnemosyne` CLI commands, output formats, cron integration