Resume prior work by rebuilding context from the Basic Memory graph via memory:// URLs, recent activity, and search. Use at session start or on 'continue with...', 'back to...', 'where were we?'
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Resume previous work by reconstructing context from the Basic Memory knowledge graph, so the assistant can pick up across sessions instead of starting cold.
If the project is unknown, discover it with bm_project(command="list").
Pass a nonempty project on every note, folder, context and schema call, even
with one project or a qualified memory:// URL. Use the chosen project's name,
workspace/project, or external ID; <project> below is a placeholder for it.
Recent activity also requires project. Search accepts project for one
project, projects for selected projects, or all_projects=True explicitly.
Discovery and bundled manuals need no project. Keep the same scope when following
returned paths, paginating, or recovering from a refusal.
If it's unclear, ask:
Known topic — use bm_context. Navigate the graph from a starting point, following relations outward:
bm_context(
identifier="memory://topic-or-note-name",
depth=2, # how many relation hops to follow
since="7d", # only include changes in this window
project="<project>",
)No clear starting point — use bm_project(command="recent", project="<project>"). See what's changed and let it surface the thread:
bm_project(command="recent", since="3d", project="<project>")Looking for something specific — use bm_search. Find candidate notes by keyword:
bm_search(query="async client refactor", page_size=10, project="<project>")Once you've identified the relevant notes, read them in full:
bm_read(identifier="note-title-or-permalink", project="<project>")For long notes, pick before you pay for bodies. compact=True drops bodies from
search results (and observations from bm_context), and a line range or a
section reads only the part you need:
bm_search(query="async client refactor", compact=True, project="<project>")
bm_read(identifier="note-title-or-permalink", start_line=120, end_line=180, project="<project>")
bm_read(identifier="note-title-or-permalink", section="Status", project="<project>")Summarize what you found, incrementally:
bm_context and bm_read both accept memory:// URLs. bm_read resolves one exact note; use bm_context for wildcard patterns that gather groups of notes.
memory://note-title # a single note by permalink
memory://folder/* # all notes in a folder
memory://specs/SPEC-24* # pattern / prefix match
memory://project/*/requirements # path wildcardsUse a specific note URL to anchor on one starting point; use a wildcard to pull in a whole folder or family of related notes at once.
bm_context and bm_project(command="recent", project="<project>") accept natural-language timeframes:
| Timeframe | Meaning |
|---|---|
"today" | Current day |
"yesterday" | Previous day |
"3d" or "3 days" | Last 3 days |
"1 week" or "7d" | Last week |
"2 weeks" | Last 2 weeks |
"1 month" | Last month |
# 1. Read the spec / project note
bm_read(identifier="SPEC-24: Postgres Database Migration", project="<project>")
# 2. Pull in related context and recent changes via the graph
bm_context(identifier="memory://SPEC-24*", since="7d", project="<project>")Then summarize: the goals, what's completed, what's pending, and any blockers or open decisions.
# 1. Check recent activity
bm_project(command="recent", since="3d", project="<project>")
# 2. Read notes from the recent sessions it surfaces
bm_read(identifier="relevant-note", project="<project>")Then list the modified notes with brief descriptions and ask which thread to dive into.
# 1. Find the topic
bm_search(query="topic keywords", project="<project>")
# 2. Build context from the best match, following its relations
bm_context(identifier="memory://found-note-permalink", depth=2, project="<project>")Then present the full picture — the note plus its connected context.
Project names are user-specific. To discover what's available before scoping a search or memory:// URL:
bm_project(command="list")A qualified memory:// URL (e.g. memory://research/papers/crdt) must agree
with project; the prefix does not replace that required parameter.
For an explicitly broader search, use one of these scopes instead:
bm_search(query="topic keywords", projects=["research", "team/engineering"])
bm_search(query="topic keywords", all_projects=True)bm_project(command="recent", project="<project>") or a wildcard bm_context, then drill into specific notes.bm_context with depth surfaces context you wouldn't find by reading one note.bm_project(command="list").basicmachines-co/basic-memory
eddb4c0
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.