Marginal

Blog

Markdown Editors Weren't Built for Coding Agents, So I Made One

Kunihiro Ishiguro ·

Marginal in split view on the zebra-rs workspace: the sidebar lists the folder tree, the markdown files, and the Claude Code sections with CLAUDE.md and skills; README.md is open in the editor with its preview beside it.

Like many engineers, I use coding agents heavily every day, mainly Claude Code. They are amazing tools for expanding what an engineer can do. I can no longer imagine doing my development work without them.

These days I have coding agents write dev plans, run security audits, generate BDD test cases, and more. For each plan and audit, I have the agent write down the plan or the audit results in markdown. On top of that, I periodically maintain CLAUDE.md and try out other engineers' amazing skills. As a result, I now have an overwhelming number of markdown documents, sometimes more than 100, scattered across different subdirectories.

Worse, I've completely lost track of which skills are currently available, which sub-agents are installed, and which rules are in effect. Some are project-local; some are shared across my account on a specific machine. I also occasionally try other coding agents like Codex and OpenCode, and each of them searches different paths.

Editing SKILL.md files brings another problem: they use a special markdown format with YAML front matter containing mandatory fields such as name and description. I want an editor that understands this structure and highlights it properly.

So I went looking for a markdown editor that understands coding-agent culture, one that can find the currently effective skills, rules, and commands for whichever coding agent I'm using.

Unfortunately, I couldn't find anything that met these requirements. Today's markdown editors work perfectly for note-taking or getting things done, but not for coding agents.

So I decided to build one. Here are the features I've implemented. I hope you like them too.

1.Automatic discovery of your coding agent's skills, rules, and commands

Of course, this is the number one feature I needed. Based on the selected coding agent (Claude Code by default), Marginal automatically finds the currently effective CLAUDE.md or AGENTS.md, along with the skills, rules, sub-agents, and commands, and lists them in the sidebar. You no longer lose track of which ones are in effect for the current project.

The sidebar listing the workspace's markdown files, then the CLAUDE CODE caption with CLAUDE.md badged project and a SKILLS section listing clean-branch, merge-pr, and sync-pr, each badged user.

2.Finding markdown files in subdirectories

This is an opt-in feature, but if you have a lot of markdown files under subdirectories, you will probably want it. Turn on "List files in subfolders" in Settings, and the list shows every markdown file under the selected directory.

In the filter box at the top of the list, you can type part of a file's path, including / to match a directory, to narrow down the file you need. Go to File (⌘T) does the same thing to open a file directly.

The file list filtered by /isis-p: 21 of 571 files match across the workspace, each shown with its folder, and the matched letters are highlighted.

3.Two AI interfaces

The first one is inside the editor. Select some text, press ⌘K, and tell the AI what to do with it. The rewrite streams in as an inline diff, and you accept or reject it as a single undo step. It runs on your own API key, and you pick the provider and model in Settings: Anthropic, OpenAI, Google, xAI, or Alibaba Cloud.

The ⌘K bar below the editor with a long selection highlighted and the prompt Make it more concise ready to send, next to presets such as Improve the writing and Fix grammar and spelling.

The second one is the coding agent in the terminal, as usual. ⌘J opens a terminal panel below the editor, so you can run claude or codex right there. When the agent writes to a file you have open, Marginal notices and offers to reload it, and a new skill it saves appears in the SKILLS section without reopening the folder.

The terminal panel below the editor and preview, running Claude Code in the workspace: the /doctor command has started its checks.

4.Read & export

Double-click a markdown file in the Finder and Marginal opens it in reading mode, which shows only the preview pane so you can focus on reading. From there you can export the file directly as PDF or HTML. Press Esc to return to the normal editing mode.

The reading view: a rendered document with a table and a footnote in a window with no editor chrome.

5.Emacs/Vim editing modes with custom key mapping

The editing mode can be set to Default, Emacs, or Vim, and the status bar shows which one is on. Yes, I'm an Emacs guy, so I need Ctrl-S "readme" Ctrl-S Ctrl-S Ctrl-G to land on the third occurrence of "readme". Vim users get /, ?, n, and N the way they expect, with the Vim mode shown in the status bar as well.

6.Dark mode and themes, including your own

Like any modern application, Marginal supports dark mode. Ten themes are built in, in five light/dark pairs: Marginal, GitHub, Solarized, Zenburn, and Dracula. A theme is a single JSON file, so you can install your own custom theme, and Marginal loads it on the fly without a restart.

One last thing

Marginal was built the way it is meant to be used: with Claude Code, plan files, rules, and skills in the repository, edited in Marginal itself once it could open them. It runs on macOS, Windows, and Linux, and you can download it from marginal.md. The manual is at marginal.md/docs. Editing needs a subscription after the trial; the AI features run on your own API key and are never gated. If your coding agent keeps its files somewhere Marginal doesn't look yet, tell me, and it becomes a row in a table.

Marginal is $10 a month or $96 a year, with a 14-day trial and no card. Pricing · Download