← Basic Memory CloudCONTENT HISTORY

Update to Basic Memory Cloud

Snapshot Sep 30, 2026 · 22:48 UTC · version 2.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "memory-tasks",
  "description": "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.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 367
    }
  ],
  "skill_md_contents": "---\nname: memory-tasks\ndescription: \"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.\"\n---\n\n# Memory Tasks\n\nManage 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.\n\n## When to Use\n\n- **Starting multi-step work** (3+ steps, or anything that might outlast the context window)\n- **After compaction/restart** — search for active tasks to resume\n- **Pre-compaction flush** — update all active tasks with current state\n- **On demand** — user asks to create, check, or manage tasks\n\n## Task Schema\n\nTasks use the BM schema system (SPEC-SCHEMA). The schema note lives at `memory/schema/Task.md`:\n\n```yaml\n---\ntitle: Task\ntype: schema\nentity: Task\nversion: 1\nschema:\n  description: string, what needs to be done\n  status?(enum, current state): [active, blocked, done, abandoned]\n  assigned_to?: string, who is working on this\n  steps?(array): string, ordered steps to complete\n  current_step?: integer, which step number we're on (1-indexed)\n  context?: string, key context needed to resume after memory loss\n  started?: string, when work began\n  completed?: string, when work finished\n  blockers?(array): string, what's preventing progress\n  parent_task?: Task, parent task if this is a subtask\nsettings:\n  validation: warn\n---\n```\n\n## Creating a Task\n\nWhen work qualifies, create a task note. Use `write_note` with `note_type=\"Task\"` and put queryable fields in `metadata`:\n\n```python\nwrite_note(\n  title=\"Descriptive task name\",\n  directory=\"tasks\",\n  note_type=\"Task\",\n  metadata={\n    \"status\": \"active\",\n    \"priority\": \"high\",\n    \"current_step\": 1,\n    \"steps\": [\"First step\", \"Second step\", \"Third step\"]\n  },\n  tags=[\"task\"],\n  content=\"\"\"# Descriptive task name\n\n## Observations\n- [description] What needs to be done, concisely\n- [status] active\n- [assigned_to] claude\n- [current_step] 1\n\n## Steps\n1. [ ] First concrete step\n2. [ ] Second concrete step\n3. [ ] Third concrete step\n\n## Context\nWhat future-you needs to pick up this work. Include:\n- Key file paths and repos involved\n- Decisions already made and why\n- What was tried and what worked/didn't\n- Where to look for related context\"\"\"\n)\n```\n\n**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.\n\n### Key Principles\n\n- **Steps are concrete and checkable** — \"Implement X in file Y\", not \"figure out stuff\"\n- **Context is for post-amnesia resumption** — Write it as if explaining to a smart person who knows nothing about what you've been doing\n- **Relations link to other entities** — `parent_task [[Other Task]]`, `related_to [[Some Note]]`\n- **`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.\n\n## Resuming After Compaction\n\nOn session start or after compaction:\n\n1. **Search for active tasks:**\n   ```python\n   search_notes(note_types=[\"task\"], status=\"active\")\n   ```\n\n2. **Read the task note** to get full context\n\n3. **Resume from `current_step`** using the `context` field\n\n4. **Update as you progress** — increment `current_step`, update context, check off steps\n\n## Updating Tasks\n\nAs work progresses, update the task note:\n\n```markdown\n## Steps\n1. [x] First step — done, resulted in X\n2. [x] Second step — done, changed approach because Y\n3. [ ] Third step — next up\n\n## Context\nUpdated context reflecting current state...\n```\n\nUpdate frontmatter too:\n```yaml\ncurrent_step: 3\n```\n\n## Completing Tasks\n\nWhen done:\n```yaml\nstatus: done\ncompleted: YYYY-MM-DD\n```\n\nAdd a brief summary of what was accomplished and any follow-up needed.\n\n## Pre-Compaction Flush\n\nWhen a compaction event is imminent:\n\n1. Find all active tasks: `search_notes(note_types=[\"task\"], status=\"active\")`\n2. For each, update:\n   - `current_step` to reflect actual progress\n   - `context` with everything needed to resume\n   - Step checkboxes to show what's done\n3. This is **critical** — context not written down is context lost\n\n## Querying Tasks\n\nWith BM's schema system, tasks are fully queryable:\n\n| Query | What it finds |\n|-------|--------------|\n| `search_notes(note_types=[\"task\"])` | All tasks |\n| `search_notes(note_types=[\"task\"], status=\"active\")` | Active tasks |\n| `search_notes(note_types=[\"task\"], status=\"blocked\")` | Blocked tasks |\n| `search_notes(note_types=[\"task\"], metadata_filters={\"assigned_to\": \"claude\"})` | My tasks |\n| `search_notes(\"blockers\", note_types=[\"task\"])` | Tasks with blockers |\n| `schema_validate(noteType=\"Task\")` | Validate all tasks against schema |\n| `schema_diff(noteType=\"Task\")` | Detect drift between schema and actual task notes |\n\n## Guidelines\n\n- **One task per unit of work** — Don't cram multiple projects into one task\n- **Externalize early** — If you think \"I should remember this\", write it down NOW\n- **Context > steps** — Steps tell you what to do; context tells you why and how\n- **Close finished tasks** — Don't leave completed work as `active`\n- **Link related tasks** — Use `parent_task [[X]]` or relations to connect related work\n- **Schema validation is your friend** — Run `schema_validate(noteType=\"Task\")` periodically to catch incomplete tasks\n"
}

SHA-256: fcc67ac4f7fdd7d2ff234152b73f4b2b6d0d5ec455724ee6364ca59c4d387862