인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
개발 및 엔지니어링 · SKILL.md

agentic-zettelkasten

agentic-zettelkasten

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

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: agentic-zettelkasten description: Structured Zettelkasten workflow for AMD — observe, draft, enrich, retrieve, decide, preview, write, verify. Produces high-quality atomic knowledge cards with deliberate linking. whenToUse: > After completing meaningful work that produced reusable insights. This skill provides a disciplined Zettelkasten protocol (inspired by Luhmann's method and the A-MEM memory model) for creating atomic cards that survive sessions. Use this INSTEAD of raw adn_notes(operation="write") for any insight worth keeping. Do NOT use for throwaway notes or session-state capture.

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..."
저장한 Skills