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.
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
globto find existing matches in002 Project/and003 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>")
- Get ID:
- If the user wants a new Tech Stack:
- Get ID:
get_next_id("003 TechStack") - Create:
create_note("003 TechStack/<ID> <Name>.md", "# <Name>")
- Get ID:
- If the user wants a new Project:
- 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.
- For each parent file in your list, use
- 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.
- Construct a string formatted as:
4. Move the Note
- Use
move_note(source_rel, dest_rel)to move the target note to theNotes/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/)
- Task: Organized
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]
- Task: Attempted to organize
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 toNotes/.
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?