about-tracker: Metadata for Files and Directories
Mar 29, 2026
About:
about-tracker is a small command line tool I wrote to add and manage metadata (descriptions) for files and directories. The idea came from a problem I kept running into in my own work: a file or directory name is usually the only place to record what something is, so names end up carrying far more than they should. Something like-
results_final_v2_fixed_lr0.001_USE_THIS.csv
experiment_3_(same as 2 but new seed, broken - dont use)/
Names like these are hard to read, awkward to type in a terminal, and still leave out the context that matters most: why the file exists, where it came from, and whether you should use it. Keeping a separate notes file doesn’t help much either, because nobody opens it, and it goes out of date as soon as files get renamed or moved.
about-tracker lets the names stay short, and puts the description right next to the file instead. In simple terms, it works as follows-
- Short names, full descriptions:
abt modify results.csvopens a small markdown file (.about_results.csv.md) in your editor, where you can write as much as you want about that file. - Descriptions are shown where you already look:
abt lsprints the normallsoutput, followed by the description of the current directory and of every entry inside it. - Descriptions follow their files:
abt mv,abt cpandabt rmmove, copy and remove the description along with the file. And if a file was moved some other way (for example in Finder),abt doctorfinds the descriptions that were left behind. - Plain files, no lock-in: the descriptions are just hidden markdown files, so they can be read without about-tracker, committed to git, and synced like any other file.
I personally use it with ls, cp, mv and rm aliased to their abt versions, so that the descriptions just always show up without me having to think about it.
Example:
Below is what the output of abt ls looks like in a directory with a few described entries:
![]()
And here is a short demo of adding descriptions and moving files around with about-tracker:
![]()
Implementation:
The whole tool is written in shell script, so it has no dependencies to install and works in both zsh and bash. There is a single abt entry point which dispatches to one script per subcommand (ls, cp, mv, rm, modify and doctor), with shared logic kept in a common functions file. It comes with install and uninstall scripts which take care of setting up (and cleanly removing) the shell configuration, and the uninstall never touches your metadata files. The behaviour of each command is covered by tests written with bats-core, which run against temporary copies of test fixtures so that they never change anything on your actual system.
If you have any questions or suggestions, please feel free to email me or raise an issue on the repo. I would be very happy to hear if you find it useful!
Links:
- github link to project: https://github.com/shashkat/about-tracker
