Knowledge Management Skill (Local Storage)
Organize your OpenClaw memory files into a structured local knowledge base. Automatically parses MEMORY.md and daily memory files, classifies entries by content type, and stores each as a timestamped markdown file in the appropriate folder.
Available Tools
Core Commands
km sync [options]- Sync memory entries to local fileskm classify [options]- Parse and classify without storing (JSON output)km summarize [options]- Generate index files for each content typekm cleanup [options]- Remove orphaned fileskm list_types- List all available content types
Setup
No API keys needed! The skill uses two locations:
- Input Workspace: Where
MEMORY.mdandmemory/daily files are read from. - Output Directory: Where organized folders (
Research/,Decision/, etc.) are written.
Both are detected automatically:
Input Workspace (source files)
OPENCLAWORKSPACEenvironment variable--workspace <path>CLI argument- Current working directory (if it contains
MEMORY.md) - Default:
~/.openclaw/workspace
Output Directory (organized files)
--output-dir <path>CLI argument (relative to workspace or absolute)- Default:
<workspace>/memory/KM
The skill will create the output directory and all content-type folders automatically.
If you want to pre-create:
mkdir -p ~/.openclaw/workspace/memory/KM/{Research,Decision,Insight,Lesson,Pattern,Project,Reference,Tutorial}
Usage Examples
Default locations (input at workspace root, output in memory/KM)
# From any directory (workspace auto-detected)
km sync --days_back 7 --cleanup
Custom input workspace and output directory
km sync --workspace /custom/input/workspace --output-dir /custom/output/KM --days_back 7
Using environment variables
export OPENCLAWORKSPACE=/custom/input/workspace
km sync --output-dir /custom/output/KM --days_back 7
Dry run (preview only)
km sync --dry_run --days_back 1
Classify entries and export JSON
km classify --days_back 3 > entries.json
Generate index files (default: output directory)
km summarize
# or specify different location
km summarize --output_dir ~/some/other/folder
Preview orphan cleanup
km cleanup --dry_run
List content types
km list_types
Storage Structure
Assuming default configuration:
- Input workspace:
~/.openclaw/workspace - Output directory:
~/.openclaw/workspace/memory/KM
~/.openclaw/workspace/
├── MEMORY.md (source file - you edit this)
├── memory/ (daily memory files)
│ ├── 2025-02-11.md
│ ├── 2025-02-12.md
│ └── ...
└── memory/KM/ (organized output by the skill)
├── local-sync-state.json
├── local-sync-log.md
├── Research/
│ ├── 20260215T1448_Title_Here_HASH.md
│ └── ...
├── Decision/
├── Insight/
├── Lesson/
├── Pattern/
├── Project/
├── Reference/
├── Tutorial/
├── Research_Index.md
├── Decision_Index.md
└── ... (other index files)
File Naming
Format: YYYYMMDDTHHMM_Title_With_Underscores_8CHARHASH.md
The 8-character content hash suffix prevents filename collisions when titles are identical but content differs.
File Content (YAML Frontmatter)
---
title: "Protocol Name"
content_type: "Research"
domain: "OpenClaw"
certainty: "Verified"
impact: "Medium"
confidence_score: 8
tags: ["AI", "Automation"]
source: "MEMORY.md"
source_file: "MEMORY.md"
date: "2026-02-11"
content_hash: "e4b30e75d0f5a662"
---
Entry body content starts here...
How It Works
- Parses
MEMORY.mdand recent dailymemory/*.mdfiles - Classifies each entry (content type, domain, certainty, impact, tags, confidence)
- Computes content hash for deduplication
- Checks sync state (
memory/local-sync-state.json) to skip already synced entries - Writes to appropriate folder with timestamp + hash filename
- Updates state mapping (hash → filepath)
- Optional cleanup removes files not in state
Classification Logic
- Content Type: Keyword matching (Research, Lesson, Decision, Pattern, Tutorial, Reference, Insight)
- Domain: Contextual inference (AI Models, OpenClaw, Cost, Trading, etc.)
- Certainty: Based on language (Verified, Likely, Speculative, Opinion)
- Impact: Importance indicators (High, Medium, Low, Negligible)
- Tags: Auto-extracted from predefined keyword map
- Confidence Score: 1–10 heuristic (source credibility, length, data mentions)
Customize by editing the EntryClassifier class in index-local.js.
State Management
memory/local-sync-state.json maps content hashes to file paths:
{
"e4b30e75d0f5a662": "/path/to/Research/202602151440_Title_e4b30e75.md"
}
This enables idempotent syncs and fast duplicate detection.
Do not edit manually unless recovering from corruption.
Cron Integration
Automate daily syncs:
openclaw cron add \
--name "Daily Knowledge Sync" \
--cron "0 5 * * *" \
--tz "Asia/Singapore" \
--session isolated \
--message "km sync --days_back 7"
Note: By default, the skill reads MEMORY.md from ~/.openclaw/workspace and writes organized files to ~/.openclaw/workspace/memory/KM. Use --workspace or --output-dir to customize these locations.
Troubleshooting
"km: command not found"
- Run
npm linkin the skill directory, or add~/workspace/binto PATH.
No entries found
- Ensure
MEMORY.mduses##section headers and###entry titles within recognized sections.
Files not created
- Check write permissions; run with
--verbose.
Old entries not syncing
- They may already be in state. Clear
memory/KM/local-sync-state.jsonto force re-sync (caution: may duplicate files).
Duplicate files
- Run
km cleanupto remove orphans, thenkm syncto create missing files.
Version: 2.0.0 Changed: 2026-02-15 — Switched from Notion to local storage, added hash suffixes for uniqueness. Author: Claire (OpenClaw Agent) License: MIT