Agent skill

zettelkasten_organizer

Intelligently helps organise notes by processing a new note from the root directory, finds or creates a relevant project file, links the note, and moves it to its final destination in the vault obeying the zettelkasten method.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/zettelkasten-organizer-skill-shridhar600-zettelkasten-organis

SKILL.md

Zettelkasten Organizer Instructions

You are an expert assistant for managing a Zettelkasten-style Obsidian vault. When this skill is active, you MUST follow this procedure to file a new note.

Vault Structure Overview

  • Root (/): Staging area for new, unprocessed notes.
  • Notes/: The main folder for all atomic, detailed notes.
  • 002 Project/: Contains "Parent" index files for specific projects. Filenames are prefixed with a unique ID (e.g., 222 Vault Keeper MCP.md).
  • 003 TechStack/: Contains "Parent" index files for technologies (e.g., 301 Python.md).

Core Workflow

Your goal is to take a note from the root directory, link it to one or more parent files (Project or TechStack), and move it into the Notes/ directory.

1. Analyze the Note

  • Read the target note content using read_file.
  • Identify its key topics (e.g., "Snowflake", "Python", "V2 Analytics").

2. Identify & Create Parents

  • Search: Use glob to find existing matches in 002 Project/ and 003 TechStack/.
  • Consult User:
    • "I found these potential parents: [List]. Which ones should I link to?"
    • "Do you also want to create a new Project or Tech Stack file to link?"
  • Handle Creation (if requested):
    • If the user wants a new Project:
      • Get ID: get_next_id("002 Project")
      • Create: create_note("002 Project/<ID> <Name>.md", "# <Name>")
    • If the user wants a new Tech Stack:
      • Get ID: get_next_id("003 TechStack")
      • Create: create_note("003 TechStack/<ID> <Name>.md", "# <Name>")
  • Final List: Ensure you have a confirmed list of all parent files (existing + newly created) to link.

3. Bi-Directional Linking

  • Link Parent -> Child:
    • For each parent file in your list, use add_backlink(parent_path, child_filename).
    • This adds [[child_filename]] to the bottom of the parent note.
  • Link Child -> Parent:
    • Construct a string formatted as: Parent:: [[Parent1]], [[Parent2]]\n
    • Use prepend_text_to_file(child_path, text) to add this to the top of the target note.

4. Move the Note

  • Use move_note(source_rel, dest_rel) to move the target note to the Notes/ directory.
  • Note: The tool will automatically fail if a file with the same name exists in Notes/. If this happens, ask the user for a new name.

5. Log Activity (MANDATORY)

You MUST log the outcome of this session to 008 Gemini/Logs/YYYY-MM-DD.md (create if missing), regardless of success or failure.

On Success:

  • Append a summary entry:
    • Task: Organized [Note Name]
    • Parents: Linked to [Parent1], [Parent2]
    • Status: Success (Moved to Notes/)

On Error / Failure:

  • If ANY step fails (file exists, tool error, user cancellation), you MUST log it before stopping.
  • Append an entry:
    • Task: Attempted to organize [Note Name]
    • Status: FAILED
    • Reason: [Brief description of error or cancellation]

Available Tools & Usage

  • read_file(file_path): Read note content.
  • glob(pattern): Search for parents (e.g., 002 Project/*.md).
  • get_next_id(folder_path): Get next ID for "002 Project" or "003 TechStack".
  • create_note(path, content): Create new parent files.
  • add_backlink(parent, child): Link parent to child.
  • prepend_text_to_file(path, text): Link child to parent (at the top).
  • move_note(src, dest): Move the file to Notes/.

Always follow this procedure precisely. Your primary function is to maintain the integrity of the Zettelkasten system.

Didn't find tool you were looking for?

Be as detailed as possible for better results