Markus

By Daniel Samson, CO-AUTHORED-BY: CLAUDE OPUS 4.7 <NOREPLY@ANTHROPIC.COM> · 2026-05-30

I've been running multiple coding agents in parallel for a while now, and the workflow that makes it possible is git worktrees — one per ticket, across however many repos that ticket touches. It keeps the agents isolated, lets me switch context without stashing anything, and means I can have four different things in flight without them stepping on each other. The catch is that each worktree needs a TICKET.md and a CODE_REVIEW.md — files the agent reads to understand what it's supposed to produce and what good looks like. Which means I'm constantly reading and editing markdown files scattered across a pile of different paths on my machine.

The problem with editing markdown in an IDE

IDEs aren't great for this. Opening a file picker, navigating to a worktree buried four directories deep, editing a .md file in a code editor that wants to treat it like source, closing it, opening the next one — it's friction. Small friction, but it compounds when you're doing it dozens of times a day across multiple active tickets.

I wanted something purpose-built for exactly this task. So I built it.

Markus

Markus is a terminal-based interface for viewing and editing the markdown files that live across my repos and their worktrees. Nothing fancy, nothing web-based — it lives in the terminal where I already spend most of my time.

The centrepiece is a custom open modal. Rather than a generic file picker, it knows about the paths I care about and lets me search and select through just the markdown files from those locations. Files are displayed in a format that makes context obvious at a glance:

{Project Name}/{Repo} {Ticket} - {Filename}

So I can immediately see which project, which repo, which ticket, and which file — without having to mentally parse a filesystem path.

The features that actually matter

  • Outline preview. The file list shows a rendered preview of the markdown structure, so I can navigate through documents and spot the right section without scrolling through the full document.

  • Tab support. Multiple files open at once, switchable with a keypress. Essential when I'm cross-referencing a TICKET.md against a CODE_REVIEW.md for the same ticket.

  • Session restore. On launch, Markus brings back whatever I had open last time. I pick up exactly where I left off.

Written with Claude

Markus itself was written using Claude. Which feels fitting — a tool for managing the context files I feed to coding agents, built by a coding agent. I gave it a clear spec of what I needed and iterated from there. The whole thing came together quickly because the requirements were narrow and concrete.

That's the broader point, really. The worktree-per-ticket setup only works smoothly if the supporting workflow — reading, editing, and switching between context files — is equally smooth. Markus plugs that gap. It's a small tool with a single job, and it does that job without getting in the way.

The net result is that working with GitHub Copilot and other agents is meaningfully faster. Less fumbling with files, more time letting the agents actually run.