Splitting Notes
Overview
Split large monolithic note files into focused, single-topic files with index-based navigation. Reduces cognitive load and improves discoverability through progressive grouping.
When to Use
digraph when_refactor {
"Note file size > 1000 lines?" [shape=diamond];
"Topics mixing unrelated concepts?" [shape=diamond];
"Hard to find specific information?" [shape=diamond];
"Refactor notes" [shape=box];
"Keep as-is" [shape=box];
"Note file size > 1000 lines?" -> "Refactor notes" [label="yes"];
"Note file size > 1000 lines?" -> "Topics mixing unrelated concepts?" [label="no"];
"Topics mixing unrelated concepts?" -> "Refactor notes" [label="yes"];
"Topics mixing unrelated concepts?" -> "Hard to find specific information?" [label="no"];
"Hard to find specific information?" -> "Refactor notes" [label="yes"];
"Hard to find specific information?" -> "Keep as-is" [label="no"];
}
Use when:
- •Note files exceed 1000 lines
- •Single file mixes unrelated topics
- •Navigation and search are difficult
- •Content needs better organization
Don't use when:
- •Files are already under 500 lines
- •Topics are tightly coupled
- •Splitting would harm coherence
Prerequisite
Complex multi-step refactoring - Must complete planning phase first.
If not currently in plan mode, invoke EnterPlanMode before starting.
- •In plan mode: Complete analysis and create migration plan
- •After plan mode: Execute split and verification
Core Pattern
Before - Monolithic file:
content/topic/large-file.md (1500+ lines) ├── H2 Chapter 1 ├── H2 Chapter 2 ├── H2 Chapter 3 └── ...10+ more sections
After - Modular structure:
content/topic/ ├── topic.md (index, ~50 lines) ├── chapter-1.md (~200 lines) ├── chapter-2.md (~150 lines) ├── chapter-3.md (~180 lines) └── ...remaining chapters
See examples.md for complete walkthroughs of:
- •Simple split (300 lines, Python)
- •Medium split (850 lines, Vue)
- •Complex split (1500 lines, React)
Quick Reference
| Principle | Rule |
|---|---|
| File size | Target ~500 lines, max 1000 |
| H2 chapters | Split by topic, merge if <100 lines |
| Index files | Same name as directory, Map of Content only |
| Structure | Progressive: Getting Started → Core → Advanced |
| Links | - [Name](./path.md) - Description (no period) |
Implementation
1. Planning Phase (Plan Mode Required)
Analyze the source:
- •Analyze target file and directory structure: use
Glob/Grepto understand context - •Read source file: identify all H2 sections
- •Calculate chapter sizes: count lines per section, plan split strategy
Create migration plan:
- •List target files with their H2 sections
- •Group related topics
- •Ensure sizes stay under 1000 lines
2. Execution Phase
Split by H2 sections:
- •Short chapters (<100 lines) → merge
- •Long chapters → separate file
- •Single H2 > 1000 lines → keep independent
- •Add
sidebar_positionand adjustedtagsfrontmatter to each split file
Create index file (same name as directory):
- •Progressive grouping (Getting Started → Core → Advanced)
- •Every link MUST have description
- •Format:
- [Name](./path.md) - Description(no period)
See examples.md for complete index file templates.
3. Verification Checklist
- • Frontmatter added to split files (
sidebar_position+tags) - • Internal links updated (use
Grep) - • Image paths corrected (
./figures/subdirectory/file.ext) - • Index order matches
sidebar_position - • Build succeeds:
pnpm build - • Lint passes:
pnpm lint:content - • Line count verified:
wc -l original new/* - • Original file deleted
- • Use
TodoWriteto mark all tasks complete
Common Mistakes
| Mistake | Fix |
|---|---|
| Splitting without planning | Use plan mode first, create migration plan |
| Index without descriptions | Every link needs - [Name](./path.md) - Description |
| Descriptions with periods | Remove period, capitalize first letter only |
| Random order in index | Use progressive grouping (basics → advanced) |
| Forgetting internal links | Grep for ](./ and update all references |
| Breaking figures paths | Update to ./figures/subdirectory/filename.ext |
| Deleting before verification | Keep original until all checks pass |
Real-World Impact
Before: python.md (1046 lines) - hard to navigate, slow to load
After: 12 focused files + index - each topic immediately accessible
Search improvement: 3x faster (specific file vs scan entire document) Build time: 40% reduction (parallel processing of smaller files)