by migsilva89
Native Markdown reader for macOS. Keep it open while you write and it follows every save. Comment on a phrase and the note is saved into the .md file itself. Your coding agent can open a plan here and wait while you mark it up.
# Add to your Claude Code skills
git clone https://github.com/migsilva89/imarkimark is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by migsilva89. Native Markdown reader for macOS. Keep it open while you write and it follows every save. Comment on a phrase and the note is saved into the .md file itself. Your coding agent can open a plan here and wait while you mark it up. It has 50 GitHub stars.
imark's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/migsilva89/imark" and add it to your Claude Code skills directory (see the Installation section above).
imark is primarily written in Swift. It is open-source under migsilva89 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh imark against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
[!NOTE] Imark opens reading, and reading is what it is for. The switch in the toolbar turns it into an editor for the file you already have open — see Editing — and comments go into the document itself, as HTML comments, so they travel with it.
⌘S to write it. Reading is the state it opens in⌘Z undoes any of it[[note]] resolves against the folder and opens in the same window, with back and forward history.md beside the open document, plus the last five you opened from anywhere else⌘F highlights every hit and tells you which one you are on⌘⇧[ and ⌘⇧], drag a tab out, Merge All Windows| Document window | Quick Look preview |
|---|---|
![]() |
![]() |
Both are rendering testdata/showcase.md. For the full
sweep — every construction, every kind of comment, and enough headings that the
outline folds itself — open testdata/everything.md.
brew install --cask migsilva89/imark/imark
Or download the latest release and drag Imark.app into /Applications. The disk image is signed and notarised, so it opens without a Gatekeeper warning.
macOS 14 or later. Imark checks once a day when you leave the option on in Settings. When a new version exists, click Install and Relaunch — the app downloads it, verifies both signatures, replaces itself and opens again.
To make it the default for .md: launch it with no document open and click Make Imark the default for .md, or use the same item in the Imark menu. Once it is the default, both quietly disappear.
Imark ▸ Install the imark Command… links imark into /usr/local/bin, or
into ~/.local/bin when that first one belongs to root — the alert says which,
before it writes anything.
imark notes.md # opens it in the copy already running
imark notes notes.md # the notes somebody left in it, as text
A document already open comes forward instead of opening twice. This is separate
from making Imark the default for .md on purpose: open notes.md should still
go to your editor.
The toolbar has one switch: an eye and a pencil. The eye is the app you know — nothing on screen offers to change the file. The pencil replaces the page with the document as text, in a plain editor: line numbers, Markdown in colour, a bar in the gutter beside every line that differs from the file on disk, and the system's own find bar with its counter and its replace field.
⌘S writes it. Until you do, live reload stands still — following the file
is the reason this app exists and also the one thing that could erase what you
typed, so while there is anything unsaved the window stops watching. The close
button carries the system's edited dot, Revert throws the buffer away and reads
the file again, and closing the window or opening another document asks first.
A save cannot land on somebody else's work: it goes through the same check every
comment does, and if the file moved since Imark read it the save is refused and
says so. ⌘Z afterwards puts the document back the way it was.
Open in… stays in the toolbar while you edit, with Cursor, VS Code, Zed, Sublime — and Claude and ChatGPT — so the moment a change is bigger than a line, the file goes to something built for it. Imark runs nothing on your machine and asks nothing of your accounts; when you come back, the reader is where you left it, and the notes are still in the file.
Select a phrase, press the speech bubble, write, press ↵. The quoted words get
underlined, a dot appears in the margin, and clicking either opens the note. Pick
one of five colours while writing it, or change it later. The card carries Edit
and Delete, and ⌘Z undoes any of it — writing, editing or deleting.
Without a selection there is a + in the margin, level with whatever the pointer is beside. On a list or a table it offers the item or the cell you are level with rather than the whole block — an agent's twenty-item list is twenty things to disagree with, not one — and the note quotes that item, so the file says which one it meant to anyone who reads it without the app.
The note is stored inside the .md file, as an HTML comment:
Rows move in batches of 500, and the deadline is generous but achievable.
<!-- imark quote="generous but achievable" by="john" at="2026-08-02T14:31Z"
Achievable with which team? This needs a number, not an adjective.
-->
Which means it travels with the document instead of living in a database only this app can read:
| Where | What you see |
|---|---|
| Imark | the words underlined, a dot in the margin, the note on click |
| Cursor, VS Code, Vim | the block above, verbatim, right under the paragraph |
| GitHub, any renderer | nothing — HTML comments are invisible |
grep, cat |
the note, with the quote it refers to beside it |
The quote= is what makes the note legible in raw text: someone opening the file
in Vim can see what it refers to without counting lines. If the quoted words are
later edited away the note goes orphan — still visible, still attached to its
block, marked as having lost its anchor. There is no fuzzy matching, because a
note in the wrong place is worse than a note without an exact one.
Four ways to get at them, because they answer different questions. The count in
the status bar opens the list — every note at once, out of the document.
⌘⇧C opens them all in place, each under its own block. ⌘' and ⌘⇧'
step through one at a time. And a rail down the left edge marks where
they are, so three clustered in one section is visible at a glance.
File › Export Comments as Text… writes a copy — not the document — with every note turned into a blockquote, for the review the other person has to read on GitHub:
Rows move in batches of 500, and the deadline is generous but achievable.