johnny-decimal
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.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Johnny Decimal File Organization
Skill base directory: {baseDir}
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, not50 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 Personalunder 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.pdforcc_MM.pdffor credit cards
Available Scripts
Scripts are located in {baseDir}/scripts/. Use the full path when invoking:
| Script | Purpose |
|---|---|
{baseDir}/scripts/jd-list.sh [ID] |
List contents of an area, category, or ID |
{baseDir}/scripts/jd-tree.sh [-L depth] [ID] |
Show directory structure using tree |
{baseDir}/scripts/jd-validate.sh <filename> |
Check if filename follows conventions |
{baseDir}/scripts/jd-mkdir.sh <category> <name> |
Create a new subcategory folder (auto-numbers) |
{baseDir}/scripts/jd-move.sh <file> <ID> |
Move a file to a JD location (with validation) |
{baseDir}/scripts/jd-note.sh [ID] [text] |
Add a timestamped note (browse if no ID given) |
{baseDir}/scripts/jd-read.sh [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:
{baseDir}/scripts/jd-list.sh 21 --porcelain # Full paths, no colors
{baseDir}/scripts/jd-tree.sh -L3 --porcelain # Full structure, no colors
{baseDir}/scripts/jd-mkdir.sh 21 "Name" --porcelain # Outputs created path
{baseDir}/scripts/jd-move.sh file.pdf 21.10 --porcelain # Outputs destination path
{baseDir}/scripts/jd-note.sh 21.10 "text" --porcelain # Adds note (text required)
{baseDir}/scripts/jd-read.sh 21.10 --porcelain # Outputs note file path
{baseDir}/scripts/jd-validate.sh file.pdf --porcelain # Machine-readable validation
When using these scripts as an agent:
-
Always use
--porcelainfor reliable parsing - Paths are absolute and suitable for further operations
- Errors go to stderr with exit code 1
-
jd-noterequires text argument in agent mode (no editor) -
jd-read --editis 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.mdin the JDex for full category breakdown -
flowchart.mdin the JDex for filing decisions - Use
{baseDir}/scripts/jd-list.shto see what exists in a location
References
For more detailed guidance, use the Read tool to load:
-
{baseDir}/references/FILING-GUIDE.md- Detailed filing decisions and examples -
{baseDir}/references/NAMING.md- File and folder naming conventions
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!