---
name: zettelkasten
description: Maintain a Luhmann-style Zettelkasten. Capture, connect, and synthesize ideas through fleeting notes, permanent notes, cross-references, and structures, with an AI agent that surfaces connections, challenges assumptions, and enriches notes with research. Use when the user shares an idea, observation, or inspiration; when reviewing or connecting existing notes; when synthesizing patterns; or during heartbeats to maintain the system.
metadata:
  hybridclaw:
    category: memory
    short_description: Luhmann Zettelkasten.
    tags:
      - zettelkasten
      - notes
      - memory
      - knowledge-base
---

# Zettelkasten

This skill implements a Luhmann-style Zettelkasten rather than a loose note
archive. The agent helps maintain note quality, find references, surface
cross-strand links, and challenge vague or weak ideas.

## Storage

All notes in `memory/zettelkasten/`:

- `inbox/` - Raw unprocessed drops (fleeting notes)
- `seeds/` - Processed atomic ideas (permanent notes)
- `connections/` - When 2+ seeds click (Luhmann's Fernverweise made explicit)
- `structures/` - Developed frameworks, plans
- `archive/` - Dormant ideas (never deleted - Luhmann's rule)
- `INDEX.md` - Curated entry points (not a tag dump - each keyword -> best
  starting seed)
- `JOKER.md` - Meta-note: how this specific Zettelkasten works, its quirks, and
  its active strands

## Note Format

```markdown
# [Title]
**ID:** YYYYMMDD-NNN
**Date:** YYYY-MM-DD
**Status:** permanent | active | mature | actionable | dormant
**Tags:** #tag1 #tag2
**Source:** [where it came from]
**Strand:** [parent ID if branching from another note]

## Idea
[The core thought - always in own words, never just a quote]

## Context
[Why this matters, what triggered it]

## References
- **Near** (same strand): [[ID]] - [relationship]
- **Far** (cross-strand): [[ID]] - [why these distant ideas connect]

## Agent Notes
[Agent observations, challenges, enrichments added over time]
```

### Naming

- Inbox: `YYYYMMDD-HHMMSS-raw.md` (timestamped, unprocessed)
- Seeds: `YYYYMMDD-NNN-slug.md` (e.g., `20260215-001-next-openclaw.md`)
- Branches: `YYYYMMDD-NNNa-slug.md` (extending a parent: 001a, 001b, 001a1)
- Connections: `YYYYMMDD-CNNN-slug.md`
- Structures: `YYYYMMDD-SNNN-slug.md`

### Reference Types (from Luhmann)

- **Near (Nahverweis):** Within the same strand/argument thread. Red thread
  connections.
- **Far (Fernverweis):** Cross-strand surprises. The magic ones. When an idea
  about memory markets suddenly links to a paper on spatial cognition.

## Operational Layer

What makes this different from every other Zettelkasten guide:

### 1. Active Maintenance (during heartbeats)

Don't just check, maintain:

- Re-read seeds >7 days old without connections. Try harder. Research if
  needed.
- Notice contradictions between notes. Flag them.
- Enrich seeds: if a raw idea mentioned a concept, look it up, add context to
  Agent Notes.
- Update `INDEX.md` when new clusters emerge.
- Update `JOKER.md` with observations about the system's shape.

### 2. Surprise Delivery

When a non-obvious far connection is found, don't just log it - tell the user.
The best Zettelkasten moments are "holy shit, I never saw that link." Deliver
these proactively.

### 3. Challenge & Provoke

If a new seed contradicts an existing one, say so. If an idea is vague, push
back. Friction matters more than passive accumulation. Add devil's advocate
notes in Agent Notes.

### 4. Strand Awareness

Track argument threads across seeds. When a user keeps circling the same theme
(even without realizing it), name the strand. "You've been thinking about
portable identity for 3 weeks across 5 seeds - here's the thread."

### 5. Periodic Review

Periodically (weekly during heartbeats), write a brief review report:

- Active strands
- What's dormant (seeds with no connections after 2+ weeks)
- What surprised you (unexpected connections found)
- Which clusters are mature enough to become structures

## Workflows

### Capture (user drops an idea)

1. If quick/raw -> file in `inbox/` with timestamp
2. If clear enough -> create seed in `seeds/`, rephrase in own words
   (Luhmann's rule)
3. Scan existing seeds for near and far references
4. If it branches from an existing seed, use branching ID (001a)
5. Update `INDEX.md` if it introduces a new concept
6. Confirm capture with one line + any immediate connections spotted

### Process Inbox (during heartbeats or on request)

1. Review `inbox/` items
2. For each: rephrase in own words, decide if it should become a permanent note or be discarded
3. Promote to `seeds/` with proper format, or leave with a note on why it's
   not ready

### Connect (active maintenance)

1. Read seeds, look for clusters - especially cross-strand far connections
2. Create connection note in `connections/` explaining the emergent pattern
3. Update both seeds with back-references
4. If the connection is surprising -> surface it to the user proactively

### Synthesize (when enough seeds cluster)

1. Draft structure in `structures/` referencing all contributing
   seeds/connections
2. Include framework, open questions, and next steps
3. Present the synthesis to the user

### Prune (on request only)

Move to `archive/` with a note on why. Never delete. Luhmann's rule:
"useless" notes become essential years later.
