This skill turns echo-fade-memory into an installed agent memory operating layer.
The public agent contract is intentionally thin:
storerecallforgetImage memory is folded into the same store/recall/forget contract. Dashboard and debugging routes live under /v1/dashboard/* and are not part of the agent-facing tool surface.
Use this skill implicitly when the conversation includes:
Prefer over-triggering low-cost recall to under-triggering and answering as if no history exists.
If http://127.0.0.1:8080 is unreachable in a containerized environment, set:
bash
export EFM_BASE_URL=http://host.docker.internal:8080
SituationActionStart of a task or sessionRecall relevant context with ./scripts/recall.sh "<query>"User states a durable preference / decision / correctionStore it immediately with ./scripts/store.sh "<content>" --summary "<summary>" --type <type>User sends an image or screenshot worth keepingStore it with ./scripts/store.sh "<file-path>" --object-type imageNeed old memory, image, or topic with one queryUse ./scripts/recall.sh "<query>"User asks to delete wrong or obsolete memoryUse ./scripts/forget.sh "<query-or-id>"Need debug analytics or dashboardsOpen /dashboard or call /v1/dashboard/*
Before answering about prior decisions, preferences, goals, screenshots, or unresolved issues:
bash
./scripts/recall.sh "database choice for this project"
Inspect:
mixedmemoriesimagesentitiesIf a recalled memory is fuzzy, you can still ground it with GET /v1/memories/<id>/ground, but keep that as an internal troubleshooting path rather than the default agent contract.
When the user says something durable, store it before moving on.
Recommended minimal memory shape:
contentsummarytypebash
./scripts/store.sh \
"User prefers dark mode and minimal UI" \
--summary "dark mode preference" \
--type preference
Advanced fields still exist, but only add them when you have a clear reason:
--importance--ref--kind--conflict-groupUse higher importance only for:
When the conversation includes a screenshot, whiteboard, receipt, or other durable visual artifact.
Recommended minimal image shape:
file_path or urlcaptiontagsocr_textbash
./scripts/store.sh \
"/absolute/path/to/meeting-whiteboard.png" \
--object-type image \
--caption "meeting whiteboard about rollout" \
--tag rollout \
--ocr-text "Deployment Checklist"
Advanced image flags still exist, but they are not the default mental model:
--session--kind--actor--memory-id--urlUse image memory when the user is likely to ask:
If a memory or image is incorrect, unsafe, or obsolete:
bash
./scripts/forget.sh "that obsolete deployment note"
./scripts/forget.sh "<image-id-or-query>" image
Situationmemory_typeNotesUser preferencepreferenceUse high importanceProject decisionprojectAdd conflict_group for versioningGoal / pending workgoalGood for future follow-upsError workaroundprojectPrefix summary with error: or learning:Capability requestgoal or projectPrefix summary with feature-request:
ScriptPurposescripts/health-check.shVerify the server is reachablescripts/store.shUnified store wrapper for memory and image objectsscripts/recall.shUnified federated recall wrapperscripts/forget.shUnified forget wrapper for memory or image objectsscripts/activator.shHook reminder for recall/store disciplinescripts/error-detector.shHook reminder when command output looks like a failure
bash
./scripts/health-check.sh
Recommended entry in openclaw.json:
json
{
"skills": {
"entries": {
"echo-fade-memory": {
"baseUrl": "http://host.docker.internal:8080"
}
}
}
}
Recommended precedence:
EFM_BASE_URLskills.entries.echo-fade-memory.baseUrlhttp://127.0.0.1:8080