Git-Notes-Based knowledge graph memory system. Claude should use this SILENTLY and AUTOMATICALLY - never ask users about memory operations. Branch-aware persistent memory using git notes. Handles context, decisions, tasks, and learnings across sessions.
OpenClaw skills run inside an OpenClaw container. EasyClawd deploys and manages yours — no server setup needed.
Initial release of git-notes-memory skill: - Introduces a branch-aware, persistent memory system leveraging git notes. - Enables Claude to manage context, decisions, tasks, and learnings across sessions—silently and automatically. - Provides a robust command set for storing, retrieving, updating, and organizing project memory. - Supports importance levels, tagging, entity extraction, and session lifecycle integration. - Enforces strict non-intrusive, “silent operation” rules regarding all memory actions.
---
name: git-notes-memory
description: Git-Notes-Based knowledge graph memory system. Claude should use this SILENTLY and AUTOMATICALLY - never ask users about memory operations. Branch-aware persistent memory using git notes. Handles context, decisions, tasks, and learnings across sessions.
---
# GitNotesMemory - Claude Integration Guide
## CRITICAL: SILENT OPERATION RULES
**These rules are ABSOLUTE and must NEVER be violated:**
1. **NEVER ask** "should I remember?" or "want me to save?"
2. **NEVER announce** "I'll remember this" or "saving to memory"
3. **NEVER show** memory command output to users
4. **NEVER mention** memory system unless user explicitly asks about it
5. **JUST DO IT** - silently in the background
## Quick Reference
```bash
# Replace $SKILL_PATH with actual path to memory.py
# Replace $DIR with the project directory path
python3 $SKILL_PATH/memory.py -p $DIR <command>
```
### Essential Commands
| Command | When to Use |
|---------|-------------|
| `sync --start` | **ALWAYS** at session start |
| `sync --end '{"summary":"..."}'` | At session end (optional but recommended) |
| `remember '{"..."}' -t tags -i h` | Store important information |
| `get <topic>` | Retrieve context about a topic |
| `search "<query>"` | Full-text search across all memories |
| `recall -i <id>` | Get full details of a specific memory |
### Importance Flags
| Flag | Level | When to Use |
|------|-------|-------------|
| `-i c` | Critical | User says "always remember", "never forget", explicit preferences |
| `-i h` | High | Decisions, architecture choices, user corrections, preferences |
| `-i n` | Normal | General information (default) |
| `-i l` | Low | Temporary notes, might be pruned |
## Session Lifecycle
### 1. Session Start (MANDATORY)
**Always run `sync --start` at the beginning of every session:**
```bash
python3 $SKILL_PATH/memory.py -p $DIR sync --start
```
**Output explains:**
```json
{
"b": "main", // Current git branch
"t": {"api": 5, "auth": 3}, // Top topics with memory counts
"c": [...], // Critical memories (always review these)
"n": 42, // Total memory count
"h": [...] // High-importance recent memories
}
```
**Use this context to:**
- Understand what the user has been working on
- Reference previous decisions
- Maintain continuity across sessions
### 2. During Session
**Silently remember when user:**
- Makes a decision: "Let's use PostgreSQL" → remember with `-i h`
- States a preference: "I prefer tabs over spaces" → remember with `-i h` or `-i c`
- Learns something: "Oh, so that's how async works" → remember with `-i n`
- Sets a task: "We need to fix the login bug" → remember with `-i n`
- Shares important context: Project requirements, constraints, goals
**Retrieve context when:**
- User asks about something previously discussed → `get <topic>`
- You need to recall a specific decision → `search "<keywords>"`
- User references "what we decided" → check relevant memories
### 3. Session End (Recommended)
```bash
python3 $SKILL_PATH/memory.py -p $DIR sync --end '{"summary": "Brief session summary"}'
```
## Memory Content Best Practices
### Good Memory Structure
**For decisions:**
```json
{"decision": "Use React for frontend", "reason": "Team expertise", "alternatives": ["Vue", "Angular"]}
```
**For preferences:**
```json
{"preference": "Detailed explanations", "context": "User prefers thorough explanations over brief answers"}
```
**For learnings:**
```json
{"topic": "Authentication", "learned": "OAuth2 flow requires redirect URI configuration"}
```
**For tasks:**
```json
{"task": "Implement user dashboard", "status": "in progress", "blockers": ["API not ready"]}
```
**For notes:**
```json
{"subject": "Project Architecture", "note": "Microservices pattern with API gateway"}
```
### Tags
Use tags to categorize memories for better retrieval:
- `-t architecture,backend` - Technical categories
- `-t urgent,bug` - Priority/type markers
- `-t meeting,requirements` - Source context
## Command Reference
### Core Commands
#### `sync --start`
Initialize session, get context overview.
```bash
python3 $SKILL_PATH/memory.py -p $DIR sync --start
```
#### `sync --end`
End session with summary (triggers maintenance).
```bash
python3 $SKILL_PATH/memory.py -p $DIR sync --end '{"summary": "Implemented auth flow"}'
```
#### `remember`
Store a new memory.
```bash
python3 $SKILL_PATH/memory.py -p $DIR remember '{"key": "value"}' -t tag1,tag2 -i h
```
#### `get`
Get memories related to a topic (searches entities, tags, and content).
```bash
python3 $SKILL_PATH/memory.py -p $DIR get authentication
```
#### `search`
Full-text search across all memories.
```bash
python3 $SKILL_PATH/memory.py -p $DIR search "database migration"
```
#### `recall`
Retrieve memories by various criteria.
```bash
# Get full memory by ID
python3 $SKILL_PATH/memory.py -p $DIR recall -i abc123
# Get memories by tag
python3 $SKILL_PATH/memory.py -p $DIR recall -t architecture
# Get last N memories
python3 $SKILL_PATH/memory.py -p $DIR recall --last 5
# Overview of all memories
python3 $SKILL_PATH/memory.py -p $DIR recall
```
### Update Commands
#### `update`
Modify an existing memory.
```bash
# Replace content
python3 $SKILL_PATH/memory.py -p $DIR update <id> '{"new": "content"}'
# Merge content (add to existing)
python3 $SKILL_PATH/memory.py -p $DIR update <id> '{"extra": "field"}' -m
# Change importance
python3 $SKILL_PATH/memory.py -p $DIR update <id> -i c
# Update tags
python3 $SKILL_PATH/memory.py -p $DIR update <id> -t newtag1,newtag2
```
#### `evolve`
Add an evolution note to track changes over time.
```bash
python3 $SKILL_PATH/memory.py -p $DIR evolve <id> "User changed preference to dark mode"
```
#### `forget`
Delete a memory (use sparingly).
```bash
python3 $SKILL_PATH/memory.py -p $DIR forget <id>
```
### Entity Commands
#### `entities`
List all extracted entities with counts.
```bash
python3 $SKILL_PATH/memory.py -p $DIR entities
```
#### `entity`
Get details about a specific entity.
```bash
python3 $SKILL_PATH/memory.py -p $DIR entity authentication
```
### Branch Commands
#### `branches`
List all branches with memory counts.
```bash
python3 $SKILL_PATH/memory.py -p $DIR branches
```
#### `merge-branch`
Merge memories from another branch (run after git merge).
```bash
python3 $SKILL_PATH/memory.py -p $DIR merge-branch feature-auth
```
## Branch Awareness
### How It Works
- Each git branch has **isolated memory storage**
- New branches **automatically inherit** from main/master
- After git merge, run `merge-branch` to combine memories
### Branch Workflow
```
1. User on main branch → memories stored in refs/notes/mem-main
2. User creates feature branch → auto-inherits main's memories
3. User works on feature → new memories stored in refs/notes/mem-feature-xxx
4. After git merge → run merge-branch to combine memories
```
## Memory Types (Auto-Detected)
The system automatically classifies memories based on content:
| Type | Trigger Words |
|------|---------------|
| `decision` | decided, chose, picked, selected, opted, going with |
| `preference` | prefer, favorite, like best, rather, better to |
| `learning` | learned, studied, understood, realized, discovered |
| `task` | todo, task, need to, plan to, next step, going to |
| `question` | wondering, curious, research, investigate, find out |
| `note` | noticed, observed, important, remember that |
| `progress` | completed, finished, done, achieved, milestone |
| `info` | (default for unclassified content) |
## Entity Extraction
Entities are automatically extracted for intelligent retrieval:
- **Explicit fields**: `topic`, `subject`, `name`, `category`, `area`, `project`
- **Hashtags**: `#cooking`, `#urgent`, `#v2`
- **Quoted phrases**: `"machine learning"`, `"user authentication"`
- **Capitalized words**: `React`, `PostgreSQL`, `Monday`
- **Key terms**: Meaningful words (common words filtered out)
## WhatRead full documentation on ClawHub