Johnny Decimal File Organization
This skill helps you work with the Johnny Decimal (JD) file system located at
~/Documents (or $XDG_DOCUMENTS_DIR).
Quick Reference
The system has 10 areas:
| Area |
Purpose |
| 00-09 System |
Meta-management (inbox, templates, scripts, archive) |
| 10-19 Personal |
People (Self, Spouse, Kids, Parents, Friends, Pets) |
| 20-29 Finances |
Banks, investments, credit, taxes, insurance |
| 30-39 Home and Property |
Homes, vehicles, major assets |
| 40-49 Career and Education |
Education, research, employers |
| 50-59 Health and Wellness |
General health resources (not personal records) |
| 60-69 Hobbies and Recreation |
Games, computing, creative works, travel |
| 70-79 Legal and Records |
Legal documents and archival records |
| 80-89 Household and Services |
Services, products, utilities, meals |
| 90-99 Reference |
Library, research, manuals, datasets |
Structure Format
XX-XX Area Name/ # Area (decade range)
└── XX Category Name/ # Category (two digits)
└── XX.YY Subcategory/ # Subcategory (ID)
Example path:
~/Documents/20-29 Finances/21 Banks/21.10 Example Bank/
Key Principles
- One place for everything - Each item has exactly one correct location
- Person-first for personal records - A spouse's health records go in
12 Spouse, not 50 Health
- Purpose determines area - A bill goes in
27 Bills, not with the service
provider
- JDex is the brain - Notes and decisions live in
00.00 JDex for System
Finding Where Things Go
Before filing, consult:
- Flowchart:
00-09 System/00 System/00.00 JDex for System/flowchart.md
- Full structure:
00-09 System/00 System/00.00 JDex for System/overview.md
Or use your judgment with the filing hierarchy:
- Is it about a specific person? →
10-19 Personal under their folder
- Is it about yourself specifically? →
11 Self
- Otherwise, match by purpose → Areas 20-99
Notes System
Notes about JD items live as markdown files in the JDex:
00-09 System/00 System/00.00 JDex for System/
├── overview.md # System structure documentation
├── flowchart.md # Filing decision tree
├── 31.14.md # Notes about current home
├── 21.10.md # Notes about a bank account
└── ...
Use jd-note to add timestamped entries to these files.
Naming Conventions
Folders:
- Areas:
XX-XX Name (e.g., 20-29 Finances)
- Categories:
XX Name (e.g., 21 Banks)
- Subcategories:
XX.YY Name (e.g., 21.10 Example Bank)
Files:
- Date-prefixed for transient items:
2024-12-27_statement.pdf
- Descriptive for permanent items:
policy_declaration.pdf
- Statements:
statements/YYYY/MM.pdf or cc_MM.pdf for credit cards
Available Scripts
These scripts help with common operations:
| Script |
Purpose |
jd-list [ID] |
List contents of an area, category, or ID |
jd-validate <filename> |
Check if filename follows conventions |
jd-mkdir <category> <name> |
Create a new subcategory folder (auto-numbers) |
jd-move <file> <ID> |
Move a file to a JD location (with validation) |
jd-note [ID] [text] |
Add a timestamped note (browse if no ID given) |
jd-read [ID] [--edit] |
Display notes for an ID (browse if no ID given) |
Also available: jd <query> for navigation (in ~/bin/).
Interactive Features
When run by a human (not an agent), these commands have interactive modes:
jd-note (no args) - Hierarchical browse (Area → Category → ID), then opens editor
jd-note <ID> (without text) - Opens editor to write a note
jd-read (no args) - Hierarchical browse (Area → Category → ID), then displays notes
jd-read --edit (no args) - Hierarchical browse, then opens editor
jd-read <ID> --edit - Opens the note file for editing
All properly handle TTY redirection for compatibility with any editor.
Agent Usage (--porcelain)
All scripts support a --porcelain flag for machine-readable output:
jd-list 21 --porcelain # Full paths, no colors
jd-mkdir 21 "Name" --porcelain # Outputs created path
jd-move file.pdf 21.10 --porcelain # Outputs destination path
jd-note 21.10 "text" --porcelain # Adds note (text required)
jd-read 21.10 --porcelain # Outputs note file path
jd-validate file.pdf --porcelain # Machine-readable validation
When using these scripts as an agent:
- Always use
--porcelain for reliable parsing
- Paths are absolute and suitable for further operations
- Errors go to stderr with exit code 1
jd-note requires text argument in agent mode (no editor)
jd-read --edit is not available in agent mode (requires TTY)
- All scripts auto-detect agent mode when stdout/stdin are not TTYs
Safety Rules
- Scripts will refuse to overwrite existing files
- Scripts validate paths before operations
- Always confirm destructive operations with the user
- When uncertain about filing location, ask rather than guess
When to Explore
If you need current structure details not covered here, read:
overview.md in the JDex for full category breakdown
flowchart.md in the JDex for filing decisions
- Use
jd-list to see what exists in a location
1---2name: johnny-decimal-23description: Helps organize files in a Johnny Decimal system at ~/Documents. Use this skill when filing documents, finding files, creating folders, taking notes about JD items, or understanding where something belongs in the system.4---56# Johnny Decimal File Organization78This skill helps you work with the Johnny Decimal (JD) file system located at9`~/Documents` (or `$XDG_DOCUMENTS_DIR`).1011## Quick Reference1213The system has 10 areas:1415| Area | Purpose |16|------|---------|17| 00-09 System | Meta-management (inbox, templates, scripts, archive) |18| 10-19 Personal | People (Self, Spouse, Kids, Parents, Friends, Pets) |19| 20-29 Finances | Banks, investments, credit, taxes, insurance |20| 30-39 Home and Property | Homes, vehicles, major assets |21| 40-49 Career and Education | Education, research, employers |22| 50-59 Health and Wellness | General health resources (not personal records) |23| 60-69 Hobbies and Recreation | Games, computing, creative works, travel |24| 70-79 Legal and Records | Legal documents and archival records |25| 80-89 Household and Services | Services, products, utilities, meals |26| 90-99 Reference | Library, research, manuals, datasets |2728## Structure Format2930```31XX-XX Area Name/ # Area (decade range)32└── XX Category Name/ # Category (two digits)33 └── XX.YY Subcategory/ # Subcategory (ID)34```3536Example path:37```38~/Documents/20-29 Finances/21 Banks/21.10 Example Bank/39```4041## Key Principles42431. **One place for everything** - Each item has exactly one correct location442. **Person-first for personal records** - A spouse's health records go in45 `12 Spouse`, not `50 Health`463. **Purpose determines area** - A bill goes in `27 Bills`, not with the service47 provider484. **JDex is the brain** - Notes and decisions live in `00.00 JDex for System`4950## Finding Where Things Go5152Before filing, consult:53- **Flowchart**: `00-09 System/00 System/00.00 JDex for System/flowchart.md`54- **Full structure**: `00-09 System/00 System/00.00 JDex for System/overview.md`5556Or use your judgment with the filing hierarchy:571. Is it about a specific person? → `10-19 Personal` under their folder582. Is it about yourself specifically? → `11 Self`593. Otherwise, match by purpose → Areas 20-996061## Notes System6263Notes about JD items live as markdown files in the JDex:64```6500-09 System/00 System/00.00 JDex for System/66├── overview.md # System structure documentation67├── flowchart.md # Filing decision tree68├── 31.14.md # Notes about current home69├── 21.10.md # Notes about a bank account70└── ...71```7273Use `jd-note` to add timestamped entries to these files.7475## Naming Conventions7677**Folders:**78- Areas: `XX-XX Name` (e.g., `20-29 Finances`)79- Categories: `XX Name` (e.g., `21 Banks`)80- Subcategories: `XX.YY Name` (e.g., `21.10 Example Bank`)8182**Files:**83- Date-prefixed for transient items: `2024-12-27_statement.pdf`84- Descriptive for permanent items: `policy_declaration.pdf`85- Statements: `statements/YYYY/MM.pdf` or `cc_MM.pdf` for credit cards8687## Available Scripts8889These scripts help with common operations:9091| Script | Purpose |92|--------|---------|93| `jd-list [ID]` | List contents of an area, category, or ID |94| `jd-validate <filename>` | Check if filename follows conventions |95| `jd-mkdir <category> <name>` | Create a new subcategory folder (auto-numbers) |96| `jd-move <file> <ID>` | Move a file to a JD location (with validation) |97| `jd-note [ID] [text]` | Add a timestamped note (browse if no ID given) |98| `jd-read [ID] [--edit]` | Display notes for an ID (browse if no ID given) |99100Also available: `jd <query>` for navigation (in `~/bin/`).101102### Interactive Features103104When run by a human (not an agent), these commands have interactive modes:105106- `jd-note` (no args) - Hierarchical browse (Area → Category → ID), then opens editor107- `jd-note <ID>` (without text) - Opens editor to write a note108- `jd-read` (no args) - Hierarchical browse (Area → Category → ID), then displays notes109- `jd-read --edit` (no args) - Hierarchical browse, then opens editor110- `jd-read <ID> --edit` - Opens the note file for editing111112All properly handle TTY redirection for compatibility with any editor.113114## Agent Usage (--porcelain)115116All scripts support a `--porcelain` flag for machine-readable output:117118```bash119jd-list 21 --porcelain # Full paths, no colors120jd-mkdir 21 "Name" --porcelain # Outputs created path121jd-move file.pdf 21.10 --porcelain # Outputs destination path122jd-note 21.10 "text" --porcelain # Adds note (text required)123jd-read 21.10 --porcelain # Outputs note file path124jd-validate file.pdf --porcelain # Machine-readable validation125```126127When using these scripts as an agent:128- **Always use `--porcelain`** for reliable parsing129- Paths are absolute and suitable for further operations130- Errors go to stderr with exit code 1131- `jd-note` **requires text argument** in agent mode (no editor)132- `jd-read --edit` is **not available** in agent mode (requires TTY)133- All scripts auto-detect agent mode when stdout/stdin are not TTYs134135## Safety Rules136137- Scripts will **refuse to overwrite** existing files138- Scripts **validate paths** before operations139- Always **confirm destructive operations** with the user140- When uncertain about filing location, **ask** rather than guess141142## When to Explore143144If you need current structure details not covered here, read:1451. `overview.md` in the JDex for full category breakdown1462. `flowchart.md` in the JDex for filing decisions1473. Use `jd-list` to see what exists in a location