Memory Schema
Manage Basic Memory schemas: find unschemaed notes, infer and edit schemas, validate...
Install
npx skills add basicmachines-co/basic-memory --skill memory-schema -g -a claude-code -y- Repository
- basicmachines-co/basic-memory4.4k
- Category
- Writing
- Updated
- 3d ago
- License
- AGPL-3.0
- Context cost
- Mediumabout 2,227 tokens
- Runs scripts
- No, instructions only
What it does
Manage Basic Memory schemas: find unschemaed notes, infer and edit schemas, validate notes, detect drift. Use when structured note types (Task, Person, Meeting) need consistency across the graph.
Memory Schema
Manage structured note types using Basic Memory's Picoschema system. Schemas define what fields a note type should have, making notes uniform, queryable, and validatable.
Project scope
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.
When to Use
- New note type emerging, you notice several notes share the same structure (meetings, people, decisions)
- Validation check, confirm existing notes conform to their schema
- Schema drift, detect fields that notes use but the schema doesn't define (or vice versa)
- Schema evolution, add/remove/change fields as requirements evolve
- On demand, user asks to create, check, or manage schemas
Picoschema Syntax Reference
Schemas are defined in YAML frontmatter using Picoschema, a compact notation for describing note structure.
Basic Types
schema:
name: string, person's full name
age: integer, age in years
score: number, floating-point rating
active: boolean, whether currently active
Supported types: string, integer, number, boolean.
Optional Fields
Append ? to the field name:
schema:
title: string, required field
subtitle?: string, optional field
Enums
Use (enum) with a list of allowed values:
schema:
status(enum, current state): [active, blocked, done, abandoned]
Optional enum:
