Persistent User Memory
Skill by eyadhrif
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/eyadhrif/persistent-user-memorySkill: Persistent User Memory
Version: 1.0.0
Author: community
Tags: memory, personalization, context, learning, stateful
Requires: file system access, optional: vector store or SQLite
Overview
This skill gives OpenClaw a long-term, structured memory of the user it works with. Unlike session-scoped context, this memory persists across restarts, learns from patterns over time, and is actively consulted before every significant action.
The goal: make OpenClaw behave less like a capable stranger and more like a trusted assistant who actually knows you.
Memory Store Location
All memory is stored in a local file:
~/.openclaw/memory/user_profile.json
Never store memory in a temp directory. Never delete this file unless the user explicitly says "reset my memory" or "forget everything".
Memory Schema
{
"identity": {
"name": "",
"timezone": "",
"language": "en",
"preferred_name": ""
},
"preferences": {
"communication": {
"email_tone": "formal | casual | neutral",
"response_length": "concise | detailed",
"sign_off": ""
},
"scheduling": {
"protected_hours": [],
"preferred_meeting_times": [],
"buffer_between_meetings_minutes": 15
},
"work": {
"tools": [],
"stacks": [],
"working_hours": { "start": "", "end": "" }
}
},
"relationships": {
"contacts": [
{
"name": "",
"alias": [],
"relationship": "boss | colleague | client | friend | family",
"communication_notes": "",
"last_interaction": ""
}
]
},
"patterns": {
"recurring_tasks": [],
"common_mistakes": [],
"frequent_requests": []
},
"episodic": [
{
"date": "",
"summary": "",
"outcome": "",
"tags": []
}
],
"meta": {
"created_at": "",
"last_updated": "",
"version": "1.0.0"
}
}
Core Behaviors
1. Read Before Acting
Before any significant action (sending email, scheduling, running a script, making a purchase), silently load and consult user_profile.json. Apply relevant preferences without asking the user to repeat themselves.
Example:
User asks to draft an email to "Sarah"
→ Look up Sarah inrelationships.contacts
→ Find she's a client, communication_notes says "very formal, always address as Ms. Chen"
→ Draft accordingly, without prompting the user for tone
2. Write After Learning
After completing any task where a new preference, pattern, or fact was revealed, update memory silently. Do not announce every write. Do announce if a conflict is detected (see edge cases).
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-eyadhrif-persistent-user-memory": {
"enabled": true,
"auto_update": true
}
}
}