zettelkasten_organizer
npx machina-cli add skill Shridhar600/Zettelkasten-Organiser-MCP/zettelkasten_organizer_skill --openclawZettelkasten 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.
Source
git clone https://github.com/Shridhar600/Zettelkasten-Organiser-MCP/blob/main/zettelkasten_organizer_skill/SKILL.mdView on GitHub Overview
This skill automates filing a new note from the Vault root into the Zettelkasten structure. It analyzes the note, finds or creates relevant Project or TechStack parents under 002 Project and 003 TechStack, links the note bidirectionally, and moves it into the Notes/ directory. It also logs every run in 008 Gemini/Logs with the date for traceability.
How This Skill Works
The skill reads the new note with read_file, extracts key topics, and searches 002 Project and 003 TechStack using glob for matching parents. If needed, it can create new Project or TechStack files using get_next_id and create_note, then links the child to each parent with add_backlink and prepends a Parent:: line to the child using prepend_text_to_file. Finally it moves the note to Notes/ with move_note and logs the outcome to 008 Gemini/Logs/YYYY-MM-DD.md.
When to Use It
- You have a new note in the Vault root that should be integrated into the Zettelkasten.
- The note's topics map to existing Project or TechStack entries.
- You want to link to both existing and newly created parent files.
- You need to move the note into Notes/ after linking.
- You want an automatic activity log entry for traceability.
Quick Start
- Step 1: read_file('<root_note_path>') to inspect the new note content.
- Step 2: glob('002 Project/*.md') and glob('003 TechStack/*.md') to find potential parents; decide on links or create new with get_next_id and create_note.
- Step 3: for each parent, add_backlink(parent_path, '<child_filename>'); prepend_text_to_file('<child_path>', 'Parent:: [[Parent1]], [[Parent2]]\n'); move_note('<root_path>', 'Notes/'); log to 008 Gemini/Logs/YYYY-MM-DD.md.
Best Practices
- Analyze notes for atomic topics to maximize quality backlinks and micro-essays.
- Before linking, review the candidate parents and confirm relevance with the user.
- Prefer existing parents; create new ones only when no suitable match exists.
- Check for name collisions in Notes/ to avoid overwrite errors.
- Always log the run in 008 Gemini/Logs/YYYY-MM-DD.md with a clear outcome.
Example Use Cases
- New note 'Snowflake basics' is linked to existing 002 Project and 003 TechStack entries, then moved to Notes/.
- Note on 'V2 Analytics' is linked to an existing Project and a TechStack, with a new parent created if needed, and filed into Notes.
- Note 'Obsidian plugin tooling' is linked to an existing TechStack entry and a related Project, then moved to Notes and logged.
- A note lacking a matching parent prompts creation of a new Project via get_next_id, then links and files as usual.
- A multi-topic note is linked to several parents (Project and TechStack) and then safely relocated to Notes/.