MCPInstall

memory-curate

Curate the Basic Memory graph: link orphan notes, propose typed relations, merge duplicates, audit tags and folders, build hub notes. Use to organize and connect a knowledge base as notes accumulate.

Installs
1.3K
Last 24h
+13
Trending rank
#7451
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/basicmachines-co/basic-memory --skill memory-curate
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads memory-curate automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Memory Curate

Maintain a healthy, well-connected knowledge graph. As notes accumulate, it pays to periodically organize, link, and curate the knowledge base so isolated notes become a connected graph.

This skill curates the knowledge graph — the notes, relations, and tags that make up the knowledge base. (For the notes' content — splitting bloated notes, consolidating scattered facts, retiring stale entries — see memory-defrag.)

When to Use

  • Asked to organize, clean up, or improve the knowledge base
  • Asked to find connections between notes, or what isn't linked yet
  • Orphan or unlinked notes are mentioned
  • Asked about duplicate or similar notes
  • Asked for help with folder organization or tag consistency
  • Phrases like "help me organize", "find related notes", "what's not linked", "clean up my notes"

Curation Capabilities

1. Find Orphan Notes

Orphans have no relations to other notes — they're islands in the graph.

# List notes, then read each to inspect its Relations section
bm_search(query="*", mode="text", page_size=50)
bm_read(identifier="note-to-check")
# Orphans have an empty (or missing) Relations section

query="*" lists everything only with mode="text". A note whose body links to other notes, with wikilinks or ordinary Markdown links, is not an orphan even without a Relations section.

If the bm CLI is available, bm orphans lists notes with no relations in one call.

What to do with orphans:

  • Suggest relations based on content similarity
  • Ask whether they should connect to existing topics
  • Propose hub notes to gather related orphans (see capability 6)

2. Suggest Typed Relations

Analyze a note's content and propose meaningful connections.

bm_read(identifier="note-to-analyze")
# Pull out key terms, then search for related notes
bm_search(query="key terms from the note")

Suggest relations based on shared topics, complementary content (problem/solution, question/answer), sequence (part 1 → part 2), or hierarchy (parent concept → detail).

Relation-type vocabulary:

  • relates_to — general topical connection
  • extends — builds upon or elaborates
  • implements — realizes a concept or spec
  • depends_on — requires understanding of
  • part_of — hierarchy or composition
  • contrasts_with — presents an alternative view
  • inspired_by — source of insight
  • enables — makes something possible

Custom relation types are fine — use whatever verb is descriptive.

Add a confirmed relation with bm_edit:

bm_edit(
    identifier="API Design Decisions",
    command="insert_after_section",
    section="Relations",
    content="- depends_on [[Rate Limiter]]",
)

insert_after_section needs the heading to exist, and orphans often have no ## Relations. Then append the section instead:

bm_edit(
    identifier="API Design Decisions",
    command="append",
    content="\n## Relations\n- depends_on [[Rate Limiter]]",
)

3. Identify Similar / Duplicate Notes

Find notes that may cover the same ground.

bm_search(query="topic keywords")
# Compare results for: similar titles, overlapping observations,
# shared tags, close-together timestamps

Actions for duplicates:

  • Merge into a single comprehensive note, then redirect the loser with a relation. If you delete the loser instead, links to it from other notes stay as unresolved links; repoint them first
  • Link with supersedes / updates when one revises the other
  • Differentiate by adding context that clarifies each note's distinct focus
# Point an older note at the one that replaces it
bm_edit(
    identifier="DB Schema v1",
    command="insert_after_section",
    section="Relations",
    content="- updates [[DB Schema v2]]",
)

4. Folder Organization Review

bm_find(path="/", depth=3, project="<project>")

Look for overcrowded folders, single-note folders, inconsistent naming, and notes that belong elsewhere. Suggest grouping related notes into topic folders, adding subfolders for large categories, and a consistent naming convention. Move misplaced notes with bm_move. By default the permalink stays the same after a move, so links keep resolving. Projects with update_permalinks_on_move enabled rewrite it from the new path.

bm_move(
    identifier="API Design Decisions",
    destination="architecture/api-design-decisions.md",
)

5. Tag Consistency

bm_search(query="*", mode="text", page_size=100)
# Inspect tag patterns across results

Look for:

  • Variant tags — architecture vs arch; pick one and standardize
  • Unused tags — present on a single note, no longer carrying weight
  • Over-used generic tags — so broad they don't aid discovery
  • Missing tags — relevant notes lacking an obvious tag

6. Create Index / Hub Notes

After finding a cluster of related notes, build a navigation hub.

bm_write(
    title="Architecture Decisions Index",
    directory="indexes",
    tags=["architecture", "index"],
    note_type="index",
    content="""# Architecture Decisions Index

A hub linking architecture-related decisions and patterns.

## Decisions
- [[Database Selection Decision]]
- [[API Design Patterns]]
- [[Authentication Architecture]]

## Patterns
- [[Repository Pattern]]
- [[Async Client Pattern]]

## Observations
- [index] Central hub for architecture knowledge #navigation

## Relations
- indexes [[Architecture]]""",
)

7. Enrich Sparse Notes

Find notes lacking structure and fill them in.

bm_read(identifier="sparse-note")

If the note is missing an Observations section, suggest categories. If it has no Relations, suggest links. If it has no tags, suggest relevant ones. If it lacks context, suggest adding background. Apply with bm_edit.

Curation Workflows

Scale the pass to the request. A health check reports orphans, likely duplicates, recent activity (bm_project(command="recent")), and folder distribution. A deep session works through the capabilities above in whatever order the findings suggest. A topic pass maps one subject with bm_search and bm_context, fills the gaps it finds, and ends with a hub note.

Best Practices

  1. Work incrementally. Don't reorganize everything at once.
  2. Confirm before changing. Always ask before moving, merging, or editing notes.
  3. Preserve permalinks. Changing a permalink breaks inbound memory:// links. Moves keep the permalink by default (unless the project enables update_permalinks_on_move).
  4. Explain suggestions. Say why a relation or merge makes sense.
  5. Respect the existing system. Enhance the user's organization — don't impose a new taxonomy.
  6. Show the graph. Use bm_context to help the user see how notes connect.

Example Conversations

User: "Help me organize my notes"

The assistant:

  1. Runs a health check on the knowledge base
  2. Reports: "You have 47 notes. I found 12 orphans and 3 potential duplicates."
  3. Asks: "Want to start by connecting the orphans, or review the duplicates first?"

User: "Find notes that should link to my API design note"

The assistant:

  1. Reads the API design note
  2. Searches for related content
  3. Suggests: "5 notes could relate —
    • 'REST Best Practices' → relates_to
    • 'Authentication Flow' → implements
    • 'Rate Limiting Decision' → extends Should I add any of these relations?"

User: "Are there notes on similar topics?"

The assistant:

  1. Analyzes titles and content for clusters
  2. Reports: "Possible overlaps —
    • 'Auth Flow' and 'Authentication Design' cover similar ground
    • 'DB Schema v1' and 'DB Schema v2' likely want a supersedes relation Want to review either?"

FAQ

What does the memory-curate skill do?

Curate the Basic Memory graph: link orphan notes, propose typed relations, merge duplicates, audit tags and folders, build hub notes. Use to organize and connect a knowledge base as notes accumulate.

How do I install memory-curate?

Run npx skills add https://github.com/basicmachines-co/basic-memory --skill memory-curate in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/memory-curate/ (personal) or .claude/skills/memory-curate/ (project).

Which AI agents can use memory-curate?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is memory-curate safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains memory-curate?

It is published by basicmachines-co in basicmachines-co/basic-memory. It has 1,283 recorded installs.

More from basicmachines-co/basic-memory

View all →

memory-notes

basicmachines-co/basic-memory

How to write well-structured Basic Memory notes: frontmatter, categorized observations, wiki-link relations, and knowledge-graph best practices. Use when creating or improving notes.

Docs & Writing1.3K installs

memory-continue

basicmachines-co/basic-memory

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?'

1.3K installs

memory-capture

basicmachines-co/basic-memory

Capture a working thread's current state into one coherent Basic Memory note; on re-capture, rewrite it in place. Use mid- or end-of-thread when decisions, insights, or context are worth keeping.

1.3K installs

memory-reflect

basicmachines-co/basic-memory

Sleep-time reflection: review recent Basic Memory activity and fold lasting decisions, lessons, and facts into the notes they belong in. Run 1-2x daily, on a heartbeat, or when asked.

memory-metadata-search

basicmachines-co/basic-memory

Search Basic Memory notes by custom frontmatter fields with equality, range, array, and nested filters. Use when finding notes by status, priority, confidence, or any YAML field, not free text.

Docs & Writing1.2K installs

memory-schema

basicmachines-co/basic-memory

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.

Docs & Writing1.2K installs

Popular docs & writing skills

View category →

grill-with-docs

mattpocock/skills

A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

Docs & Writing1.2M installs

lark-markdown

open.feishu.cn

飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。

Docs & Writing778.7K installs

writing-beats

mattpocock/skills

Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.

Docs & Writing490.7K installs

writing-shape

mattpocock/skills

Writing, exploit: shape raw material into an article, paragraph by paragraph.

Docs & Writing490.2K installs

writing-fragments

mattpocock/skills

Writing, explore: mine raw fragments, no structure yet.

Docs & Writing489.6K installs

writing-for-agents

mattpocock/skills

Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.

Docs & Writing479.3K installs