Claude Modsunofficial directory

Dashboards·terminal · desktop·MIT

transit-map

Git history as a Vignelli-style subway map; the train moves when Claude commits.

transit-map pane in Claude Code: main and three feature branches as coloured subway lines, a train past HEAD
Screenshots from the transit-map repository, MIT license

transit-map draws your git history as a subway map in a Claude Code pane. Branches are coloured lines, commits are stations, merges are interchanges, and your working tree is a train parked just past HEAD. The map follows Claude as it works: a commit pops in a new station and slides the train forward, and a branch switch moves the train onto another line.

What it does

  • Lines are branches. The trunk (main, master, trunk or develop) is always red and runs along the top. Your current branch comes next, then the others by latest commit, each in a flat colour from a Vignelli-era subway palette.
  • Stations are commits. ○ is a commit, ◎ a merge, ▣ a tagged commit with the tag name above it, and ● is HEAD. Branches that exist only on the remote are drawn dashed and grey.
  • The train is your working tree. It carries one car ▮ per modified or untracked file. A car turns yellow when Claude has edited that file.

transit-map after Claude commits on feature/search: a new station on the blue line and a train with no cars

A branch that points at the same commit as another, such as one you just created, gets no line of its own: its name appears under that station. Commits from merged or deleted branches keep grey lines without a name.

Install

Needs Claude Code 2.1.287 or later, plus git.

claude plugin marketplace add ccdwyer/claude-mods
claude plugin install transit-map@ccdwyer-mods

The marketplace is the author’s shared one, which also carries a starfield view of the repo by the same author, codebase-galaxy; if you already added it, the second command is enough.

Run /reload-plugins, then /metro inside a git repository. It replies with the number of stations and lines and opens the map in a pane. Arrow keys ← → or a drag pan along the map, ↑ ↓ walk from station to station, PgUp and PgDn bring lower lines into view, f follows the train and Home jumps back to the oldest station. Hovering a station shows its short hash, subject, author and age below the map; clicking it or pressing Enter adds the files that commit changed.

After the first /metro, a one-row strip above the prompt shows your branch, the train, how many files are uncommitted and how many of them Claude edited, and how far you are ahead of or behind the upstream. /metro strip off hides it and /metro strip on brings it back.

How it works

Everything comes from the local git binary, run in the repository root with a five-second timeout. To draw the map, transit-map reads the log of all branches, the current branch, its upstream with the ahead and behind counts, and git status including untracked files. Clicking a station runs git show for that one commit. All of these commands only read, and none of them is git fetch, so remote lines show whatever your last fetch brought in.

Nothing happens until you open the map once. From then on, the tool.call hook lets each call run first and only looks at the result: it never changes, refuses or adds to a call, and it ignores calls made by subagents. It reads the text of each shell command to check it against a pattern of git verbs that move history (commit, checkout, switch, merge, rebase, reset, pull, push, tag, stash and a few more) plus gh pr merge and gh pr checkout; a match redraws the whole map. A successful Edit, Write or NotebookEdit records the file’s path, so its car can light up, and re-reads git status. Any other shell command that Claude Code does not mark as read-only re-reads git status too. At the end of each turn the whole map is redrawn, which picks up commits made by subagents or by commands the pattern missed.

The map, the selected commit’s details and the last 50 paths Claude edited stay in the plugin’s state. It writes no files and makes no network calls, which matches the README’s privacy section.

Limitations

  • The map shows the newest 120 commits across all branches. If you check out something older, up to 30 commits of HEAD’s own history are added.
  • At most 10 lines get their own colour; the rest share one grey +N more lines lane.
  • The train carries at most 60 cars, and the strip above the prompt shows eight of them.
  • The map only refreshes on Claude’s tool calls, at the end of each turn and on /metro. A commit you make in another terminal appears after Claude’s next turn or the next /metro.
  • The author shows the map only in the terminal. On surfaces without interactive regions, such as mobile, the pane falls back to a plain timetable of the newest 15 stations.

Similar Claude Mods

The whole directory →