memory-tasks
Task management via Basic Memory schemas: create, track, and resume structured tasks that survive context compaction. Uses BM's schema system for uniform notes queryable through the knowledge graph.
By basicmachines-co · 781 installs
npx skills add basicmachines-co/basic-memory --skill memory-tasks
Source repository · Upstream listing
Memory Tasks
Manage work in progress using Basic Memory's schema system. Tasks are just notes with type: Task — they live in the knowledge graph, validate against a schema, and survive context compaction.
When to Use
Starting multi step work (3+ steps, or anything that might outlast the context window)
After compaction/restart — search for active tasks to resume
Pre compaction flush — update all active tasks with current state
On demand — user asks to create, check, or manage tasks
Task Schema
Tasks use the BM schema system (SPEC SCHEMA). The schema note lives at memory/schema/Task.md :
Creating a Task
When work qualifies, create a task note. Use write note with note type="Task" and put queryable fields in metadata :
Why both frontmatter and observations? Fields in metadata (stored as frontmatter) power search notes with metadata filters . Fields as observations ( [status] active ) power schema validate . Include queryable fields in both places for full coverage.
Key Principles
Steps are concrete and checkable — "Implement X in file Y", not "figure out stuff"
Context is for post amnesia resumption — Write it as if explaining to a smart person who knows nothing about what you've been doing
Relations link to other entities — parent task [[Other Task]] , related to [[Some Note]]
note types is case sensitive — write note(note type="Task") stores the type as lowercase task in frontmatter. Use note types=["task"] (lowercase) in search queries.
Resuming After Compaction
On session start or after compaction:
1. Search for active tasks:
2. Read the task note to get full context
3. Resume from current step using the context field
4. Update as you progress — increment current step , update context, check off steps
Updating Tasks
As work progresses, update the task note:
Update frontmatter too:
Completing Tasks
When done:
Add a brief summary of what was accomplished and any follow up needed.
Pre Compaction Flush
When a compaction event is imminent:
1. Find all active tasks: search notes(note types=["task"], status="active")
2. For each, update:
current step to reflect actual progress
context with everything needed to resume
Step checkboxes to show what's done
3. This is critical — context not written down is context lost
Querying Tasks
With BM's schema system, tasks are fully queryable:
Query What it finds
search notes(note types=["task"]) All tasks
search notes(note types=["task"], status="active") Active tasks
search notes(note types=["task"], status="blocked") Blocked tasks
search notes(note types=["task"], metadata filters={"assigned to": "claude"}) My tasks
search notes("blockers", note types=["task"]) Tasks with blockers
schema validate(noteType="Task") Validate all tasks against schema
schema diff(noteType="Task") Detect drift between schema and actual task notes
Guidelines
One task per unit of work — Don't cram multiple projects into one task
Externalize early — If you think "I should remember this", write it down NOW
Context steps — Steps tell you what to do; context tells you why and how
Close finished tasks — Don't leave completed work as active
Link related tasks — Use parent task [[X]] or relations to connect related work
Schema validation is your friend — Run schema validate(noteType="Task") periodically to catch incomplete tasks