Organizing my Vault

The organize pipeline is the most-used part of the whole setup. It handles everything from routing new notes to their right home, to rebuilding the _index.md map files that let Claude navigate without loading the full vault into context.

The Problem with a Single /organize

Originally, /organize was one big skill that did everything: sort files, build indexes for Atlas, build blog indexes (different format), fix calendar structure β€” all in one pass. It worked, but it got messy fast.

The blog _index.md format is completely different from the vault index format. Calendar has a weekly report step. Tasks need consolidation, not indexing. Shoving all of this into one skill meant the instructions kept growing and the skill kept trying to do too many contradictory things at once.

The fix: split into focused sub-skills, with a router on top.

The Skill Structure

/organize is now a thin router. It reads the target directory and delegates:

What you runTarget
/organize 01 Atlas/β†’ /organize-knowledge
/organize 02 Calendar/β†’ /organize-calendar
/organize 00 Blogs/β†’ /organize-blogs
/organize 06 Tasks/β†’ /organize-tasks
/organize 04 Inbox/β†’ /organize-inbox
/organize (no path)β†’ runs all five in order

Each sub-skill is self-contained and knows exactly what it’s responsible for.

/organize-knowledge β€” Atlas and Efforts

The core sort-and-index skill. Runs on 01 Atlas/ (evergreen knowledge) and 03 Efforts/ (active projects).

Phase 1 β€” sort loose files: Claude scans for .md files sitting directly in a directory that has subdirectories. For each loose file, it reads the filename, frontmatter tags, and first few lines of content, then decides if there’s a confident match to one of the existing subdirs.

The key word is confident. If a file could go in two different places equally, it stays put. Only clear matches get moved β€” no guessing.

Phase 2 β€” rebuild indexes: Working bottom-up (leaves before parents), Claude regenerates every _index.md:

  • Date, Description, tags: moc/<dirname> frontmatter
  • 2–3 sentence description of what the folder contains
  • TOC split into ### Sub-directories and ### Files
  • Descriptions pulled from the child _index.md Description field

The bottom-up order matters: when the parent builds its TOC, the child _index.md files already exist and can be read for their descriptions.

/organize-blogs β€” Blog Indexes

Different format entirely. Blog _index.md files are rendered on the public Quartz site, so they follow a Hugo-compatible structure:

---
title: Directory Name
date: 2026-05-24
order: 0
listing: false
tags:
  - projects/homelab
---
 
## Introduction
 
Casual, personal 1–3 sentences.
 
## Table of Contents
 
- ### Group Name
	- ##### [Post Title](<Post.md>) β€” one-line description

The grouping logic depends on what’s in the directory. If there are subdirectories, each gets its own ### Group Name header with posts nested under it. If it’s just flat files, skip the grouping β€” plain list.

After writing all indexes, the skill runs enforce-blog-index.py β€” a script that catches any posts not yet listed in a TOC and adds them automatically.

/organize-calendar β€” Calendar Structure

Calendar has three phases:

  1. Fix links β€” runs update-links.py to resolve broken references in 02 Calendar/
  2. Rebuild indexes β€” same format as knowledge indexes, but scoped to calendar directories (months, years)
  3. Generate weekly report β€” calls the State of the Brain logic (see Weekly State of the Mind)

The calendar directory structure looks like:

02 Calendar/
  2026/
    Mar/   ← daily notes
    May/   ← daily notes
  Obsidian/
    2026/
      May_Week_3.md  ← weekly synthesis report
  Milestones!/

/organize-tasks β€” Task Consolidation

06 Tasks/ is different from the rest β€” it’s not a knowledge directory, it’s a living task tracker. The skill scans all task files for open - [ ] items and stale entries, updates frontmatter, and outputs a cross-file summary:

Projects.md       β€” 3 open, 12 completed
Job Search.md     β€” 5 applications in progress
Interview.md      β€” 2 open
Milestones.md     β€” 1 open

No merging, no moving files. Each task file owns its domain.

/organize-inbox β€” Inbox Processing

This one just delegates to /obsidian-cleanup, which handles the actual filing logic: routing inbox notes to 01 Atlas/, 03 Efforts/, or 02 Calendar/ based on their tags and content, and filling in missing frontmatter.

Running the Full Pipeline

/organize-inbox      # drain the inbox first
/organize-knowledge  # sort and index Atlas + Efforts
/organize-blogs      # update blog indexes
/organize-calendar   # fix links, rebuild, weekly report
/organize-tasks      # consolidate tasks

Or just /organize with no arguments β€” it runs all five in order.

The split made each skill smaller and sharper. /organize-knowledge doesn’t need to know anything about blog formatting. /organize-calendar doesn’t need to think about task consolidation. Each one does one thing well.


See also: Overview of Claude Structure for how skills fit into the broader setup.