directory tag manager · written in crystal
Put your directories on the cutting board.
Tag the folders you actually live in — then jump, list, and run across the whole pile at once.
brew install hahwul/doma/doma
# pin a directory, tag it $ doma add ~/labs/noir -t crystal -t security ✓ tagged ~/labs/noir crystal security # jump back by tag — picker opens on multiple matches $ doma cd crystal ▸ ~/labs/noir ~/Projects/doma ~/Projects/hwaro # or chop through all of them at once $ doma list -t crystal --paths | xargs …
I kept losing track of where things lived — twelve Crystal
repos in one folder, seven shell experiments in another, the
security write-ups elsewhere. cd's history
wasn't enough; fuzzy finders forgot what mattered the moment
I cleared the terminal. So I wrote a cutting board: pin the
directories I care about, label them with whatever tags make
sense (crystal, work/proj-a,
reading-this-week), and let the tool do the
recall.
On the board
three moves · one workflow-
Tag
Label the directories you actually live in — by language, client, or this week's spike. Tags can be permanent, or expire on a TTL.
$ doma add ~/Projects/doma -t crystal -t cli -
Jump
One tag, one keystroke. A built-in TUI picker opens when more than one directory matches, and the shell wrapper makes it actually cd.
$ doma cd crystal -
Fan out
List paths by tag and pipe them into anything — build, grep, sync — across the whole pile at once.
$ doma list -t crystal --paths | xargs -I{} sh -c 'cd {} && shards build'
$ doma mark spike # bookmark cwd for a week, then it expires $ doma status -t work # git status across every tagged repo $ doma run -t crystal -- shards build # run a command in each match $ doma snapshot export > board.json # the whole board, portable
the cutting board — the workbench where ingredients get gathered, grouped, and chopped before going into the pan. the metaphor stuck.