I keep a lot of repositories side by side in one directory. Pulling, checking status or switching to the main branch means walking into each of them in turn. madgit runs the command in every repository under a directory instead. The blog post covers how this wrapper grew out of custom git commands and a lightning talk at Cebula Camp 2025.
madgit --dir ~/projects status
madgit pull
madgit --dir ~/projects exec -- git log --oneline -5
The usual alternatives are a shell loop over */ or a multi-repository tool like myrepos. madgit adds what those leave to you: cloning every repository of a forge owner, remembering where each checkout came from, and mirrors.
Any top-level command madgit does not know is forwarded as git <subcommand> to every repository, so madgit stash or madgit rev-parse --show-toplevel just work. status colours each header: red needs sync, yellow has changes, cyan is clean.