agentleFS
sandraschisandraschi/advanced-memory-mcp/skills/advanced-memory/agentic-zettelkasten/SKILL.md

agentic-zettelkasten

Skill19 starsChanged 20 days agoMITView on GitHub

Structured Zettelkasten workflow for AMD — observe, draft, enrich, retrieve, decide, preview, write, verify. Produces high-quality atomic knowledge cards with deliberate linking.

The file

We split this skill into the rules it gives an agent

12 rules. About 0 are common, 11 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈11

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    This skill replaces ad-hoc note-taking: Every card written through this workflow is an atomic insight in your own words, with [[wikilinks]] …

    line 18
  2. Distinctive:

    After completing a task, identify reusable insights.

    line 48
  3. Distinctive:

    Not reusable across future sessions

    line 51
  4. Distinctive:

    If nothing is worth remembering, stop here.

    line 53
  5. Distinctive:

    When it applies (boundary conditions)

    line 63
  6. Distinctive:

    If you need more than 8 sentences, you probably have two insights.

    line 66
  7. Distinctive:

    Search for related existing cards using at least TWO queries:

    line 82
  8. Distinctive:

    Read the top candidates that look relevant:

    line 89
  9. Distinctive:

    If in doubt between create and update: create.

    line 111
  10. Distinctive:

    Before writing, produce a preview:

    line 115
  11. Distinctive:

    Every link has a "because" clause

    line 148
  12. Distinctive:

    After writing, read the card back:

    line 154

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Agentic Zettelkasten Skill

A structured Zettelkasten protocol for Advanced Memory that produces high-quality atomic knowledge cards through deliberate retrieval, enrichment, and explicit link decisions.

This skill replaces ad-hoc note-taking. Every card written through this workflow is an atomic insight in your own words, with [[wikilinks]] embedded in sentences explaining the relationship — not a bare tag list.

Core Principles (Luhmann's Method)

  1. Atomicity — One insight per card. If you have two ideas, write two cards.
  2. Own words — Distill and rephrase. Copy-paste = no understanding (Feynman test).
  3. Links in context — [[links]] must appear in sentences explaining the relationship. Good: "This contradicts [[jwt-migration]] — stateless tokens can't be revoked." Bad: "Related: [[jwt-migration]]"
  4. Retrieve before write — Always search for existing cards first. Never create duplicates.
  5. Preview before mutate — Show planned changes before writing anything.

Tools Available

ActionAMD Tool
Search existing knowledgeadn_search(operation="rag", prompt="...") or adn_search(operation="query", text="...")
Read a cardadn_notes(operation="read", identifier="...")
Write a new cardadn_notes(operation="write", title="...", content="...", folder="...")
Edit existing cardadn_notes(operation="edit", identifier="...", mode="append", content="...")
Check recent activityadn_nav(operation="recent", timeframe="7d")
Analyze knowledge gapsadn_zettel(operation="analyze")
Get link suggestionsadn_zettel(operation="connect")

Workflow

Step 1: Observe — What did we learn?

After completing a task, identify reusable insights. Skip if the content is:

  • Temporary or session-specific (in-progress work, task state)
  • Obvious or well-known (standard library usage, common patterns)
  • Not reusable across future sessions

If nothing is worth remembering, stop here. This is a quality gate, not a formality.

Step 2: Draft — One atomic card per insight

For each insight, draft exactly one card:

  • Title: Short noun phrase (≤60 chars, kebab-case slug). Descriptive, not clever.
  • Body: One atomic insight in your own words. 3-8 sentences. Include:
    • What the insight IS
    • Why it matters (context)
    • When it applies (boundary conditions)
    • A concrete example or counterexample

If you need more than 8 sentences, you probably have two insights. Split them.

Step 3: Enrich — Proposed metadata

---
title: <Short Noun Phrase>
created: <YYYY-MM-DD>
category: <one category: developer|researcher|writer|knowledge-worker|etc.>
tags: [<3-5 comma-separated categories>]
keywords: [<3-8 salient terms>]
---

Step 4: Retrieve — Search before writing

Search for related existing cards using at least TWO queries:

adn_search(operation="rag", prompt="<topic keywords>", limit=5)
adn_search(operation="query", text="<exact term>", search_type="title")

Read the top candidates that look relevant:

adn_notes(operation="read", identifier="<slug>")

Limits to avoid runaway retrieval:

  • Max candidate searches: 3
  • Max cards read: 10

Step 5: Decide — create, update, or skip

Choose exactly one action per insight:

ActionWhen
createNo existing card covers this insight. Embed [[wikilinks]] to related cards.
updateExisting card covers the same insight but lacks new detail.
skipInsight is duplicate, too obvious, or not durable.

Rules:

  • Links must be chosen by reading candidate cards, not from embedding scores.
  • Updating is allowed only after preview (Step 6).
  • If in doubt between create and update: create. It's safer to have two cards than to corrupt one.

Step 6: Preview — Show planned changes

Before writing, produce a preview:

Planned memory changes:
- CREATE: python-asyncio-gotcha (title: "Asyncio gather() doesn't guarantee order")
  → links: [[task-queue-pattern]] because tasks run concurrently, not sequentially
  → metadata: category=developer, tags=python,async,concurrency
- UPDATE: task-queue-pattern — add note about gather() ordering pitfall
  → append: "Note: asyncio.gather() starts all tasks concurrently; results
    may arrive out of order. Use asyncio.as_completed() for ordered results."

Step 7: Write

Create new card:

adn_notes(operation="write",
  title="Asyncio gather() doesn't guarantee order",
  content="...",
  folder="developer",
  tags="python,async,concurrency")

Update existing card:

adn_notes(operation="edit",
  identifier="task-queue-pattern",
  mode="append",
  content="...")

Rules for writing:

  • Wikilinks go in body text, not just frontmatter
  • Every link has a "because" clause
  • Title must match slug (kebab-case)
  • Content is markdown with at least one [[wikilink]]

Step 8: Verify — Readback check

After writing, read the card back:

adn_notes(operation="read", identifier="<slug>")

Confirm:

  • Title and body match what was intended
  • All [[wikilinks]] are syntactically valid
  • Metadata frontmatter is complete (title, created, category, tags)
  • Body is in your own words (not copy-pasted)

Anti-Patterns

Don'tDo instead
Write 5 cards at once without retrievalOne card at a time, retrieve between each
Add [[links]] based on keyword overlapRead the target card, decide if the relationship is meaningful
Update a card without previewPreview first, then update
Use AI-generated content verbatimDistill and rephrase in your own words
Skip the verify stepAlways readback after writing
Create a "note dump" with 3 ideas in one cardSplit into atomic cards, one insight each
Use bare links like "See also: [[X]]"Embed in sentence: "This relates to [[X]] because..."

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.