Deepal Jayasekara52 downloadsRenders Obsidian inline %% comments %% as Google-Docs-style review cards in the right margin, visible in reading, live preview and source modes.
Collaborate with AI agents directly in your Obsidian notes. Leave instructions beside a passage, ask questions, and exchange feedback through comment threads that stay with the text you're working on.

Inline Review Comments turns Obsidian's %% comments %% into review cards in
the right margin in Reading view, Live Preview, and Source mode.
You use the cards to communicate; an agent with access to your note's Markdown
can read your comments and write replies into the same file.
Comments stay in your Markdown files, so they remain editable even if you disable or uninstall the plugin. Obsidian hides them in Reading view when the plugin is disabled.

Use comments to ask an agent to revise a paragraph, check a claim, explain a change, or discuss an idea. Because the conversation is stored as plain text in the note, an agent that can read and edit Markdown files can participate using the same comment format.
%% ::Agent:: Reply text %% directly after each relevant comment.For example, this Markdown appears as one conversation in a margin card:
This guide explains how to review a draft.
%% ::You:: Can you add a practical example to this introduction? %%
%% ::Agent:: Who is the example for: new writers or experienced editors? %%
%% ::You:: New writers. Show how to ask for feedback on their first draft. %%
You can give your agent an instruction like:
Read the review comments in this note. Use
%% ::Agent:: ... %%for your replies, placing each reply immediately after the comment you're answering, with no blank line between them. Preserve existing comments and explain any changes you make in a reply. Leave the threads in place for me to review.
This keeps requests, questions, and explanations beside the relevant passage throughout the review.
Minimum Obsidian version: 1.13.0, as declared in the plugin manifest.
Once the plugin is listed in Obsidian's Community plugins directory:
main.js, manifest.json, and styles.css from a
GitHub release.
If no release is available yet, follow the development instructions below
to build main.js and use the other two files from this repository.<vault>/.obsidian/plugins/inline-review-comment/ and place all three
files directly inside it. If your vault uses a custom configuration folder,
replace .obsidian with that folder's name.With a selection, the command leaves the original text in place and inserts a comment after it containing a copy of the passage. The quoted passage appears above your feedback in the card; it does not update when the original text changes.
You can assign a hotkey to the command in Settings → Hotkeys.
Enabled by default: the plugin makes Obsidian's built-in Toggle comment
command insert a review comment instead of toggling comment markers around text.
Its existing shortcut (usually Cmd+/ on macOS or Ctrl+/ on Windows/Linux)
uses this behavior. Turn off Use “Toggle comment” shortcut (Cmd/Ctrl+/) in
the plugin settings to restore Obsidian's normal toggle behavior.
Typing %% also expands into a complete comment template by default. Turn off
Auto-insert author when typing %% if you prefer to type comment markers manually.
Use Obsidian's normal comment syntax for an anonymous comment:
This claim needs a source. %% Add a citation here. %%
Add ::name:: at the start to display an author:
This claim needs a source. %% ::Jane Doe:: Add a citation here. %%
Comments can also span multiple lines:
%% ::Jane Doe::
Please expand this section.
Include an example for new readers.
%%
Comments without an author are labeled Comment. Comment bodies render Markdown, including emphasis and links. The parser ignores comment markers inside inline code and fenced code blocks.
%% ... %% comments in the note, using your configured author name.Adjacent comments form one thread when separated only by whitespace and at most one line break. A blank line or other text between comments starts a new thread. Reply, delete, and resolve actions work in all three view modes.
Open Settings → Inline Review Comments to configure:
| Setting | Default | What it does |
|---|---|---|
| Show review comments | On | Shows margin cards and inline indicators, and enables automatic expansion when typing %%. Turning it off does not disable the insert command or restore the Toggle comment command. |
| Comment author name | Blank | Adds your name to newly inserted comments and replies. Existing author names remain unchanged. |
| Use “Toggle comment” shortcut (Cmd/Ctrl+/) | On | Makes the built-in Toggle comment command insert a review comment. Turn off to restore its normal behavior. |
| Auto-insert author when typing %% | On | Expands a typed %% into a complete comment, with your name if configured, and places the cursor in the body. |
| Hide comment markers in Live Preview | On | Collapses the whole comment to an inline indicator until the cursor enters it. Source mode keeps the text visible. |
| Card width | 240 px | Sets the card width from 180 to 360 px, in steps of 10 px. |
Cards reserve space on the right when a note contains comments. If the writing area feels cramped, widen the note pane or reduce Card width.
Comments, author names, quoted passages, and replies are stored directly in the note's Markdown. Anyone with access to that file can read them. Author names are plain text labels and do not require an account.
The plugin has no telemetry or external comment service. Card content is rendered through Obsidian's Markdown renderer; remote images and other embeds may load external content, and clicking external links opens them in your browser. How an agent processes your notes depends on the agent and its configuration.
Report bugs or suggest improvements in GitHub Issues. For display problems, include your Obsidian version, theme, view mode, and a small example note that reproduces the issue.
Requires npm and Node.js 24.15.0 or newer. .nvmrc selects Node.js 24,
which is also used by GitHub Actions.
npm ci
npm run lint # official Obsidian checks
npm run dev # esbuild watch
npm run build # type-check + production bundle
npm test # parser unit tests
Obsidian and CodeMirror development dependencies are pinned to compatible versions.
Builds write main.js to the repository root. manifest.json and styles.css
are already in that directory. To copy all three files into a test vault after
each build, set OBSIDIAN_VAULT_DIR to the vault root:
OBSIDIAN_VAULT_DIR="/path/to/test-vault" npm run dev
Automatic copying uses <vault>/.obsidian/plugins/inline-review-comment/.
For a custom configuration folder, copy the files manually. Reload the plugin
after JavaScript changes; restart Obsidian after changing manifest.json.
semantic-release manages semantic versions, CHANGELOG.md, and GitHub releases using Conventional Commits:
| Commit | Version change |
|---|---|
fix: correct comment positioning |
Patch, for example 1.0.0 → 1.0.1 |
feat: add a comment filter |
Minor, for example 1.0.0 → 1.1.0 |
feat!: change the comment format |
Major, for example 1.0.0 → 2.0.0 |
A BREAKING CHANGE: footer |
Major |
docs:, chore:, test:, or refactor: without breaking changes |
No release |
Use this format for commit messages. When squash-merging a pull request, use
a Conventional Commit as the squash commit's title and preserve any
BREAKING CHANGE: footer in its body. The highest required bump among commits
since the previous release determines the next version.
The CI and release GitHub Actions workflow tests and builds pull requests
and pushes to main. After checks pass on main, it:
package.json, package-lock.json, manifest.json, and
versions.json, preserving compatibility entries for older versions.chore(release): <version> [skip ci].1.0.0 (without a v prefix, as required by Obsidian)
and publishes a GitHub release containing main.js, manifest.json, and
styles.css.With no existing release tags, the first automated release is 1.0.0.
Subsequent releases use the published tags as their version baseline. Leave
version changes to the workflow; update minAppVersion in manifest.json
when a change requires a newer Obsidian version.
The workflow uses GitHub's built-in GITHUB_TOKEN; no npm token or additional
secret is needed. GitHub Actions must be enabled, and repository rules must
allow that token to push release commits and tags to main. If branch
protection requires all changes through pull requests, configure an allowed
release identity before enabling automated publishing.
You can rerun the workflow with Actions → CI and release → Run workflow
on main. To preview a release with repository push access and a GitHub token
in your environment:
npm run release:dry-run
Dry runs calculate versions and release notes without updating files or publishing a release. The plugin is distributed through GitHub releases; the package is private and the release configuration does not publish to npm.
| File | Responsibility |
|---|---|
src/parser.ts |
Parses comments, authors, and quoted excerpts; groups threads and skips code. |
src/card.ts |
Builds thread cards with reply, delete, and resolve controls. |
src/card-layer.ts |
Positions and stacks cards in the margin. |
src/editor-extension.ts |
Renders cards and handles actions in Source mode and Live Preview. |
src/reading-view.ts |
Renders cards and handles actions in Reading view. |
src/comment-edit.ts |
Locates comments for deletion, replies, and thread resolution. |
src/hide-markers.ts |
Adds inline indicators and collapses comments in Live Preview. |
src/auto-comment.ts |
Expands typed comment markers into a template. |
src/render.ts |
Renders comment Markdown and handles links. |
src/settings.ts |
Defines settings, defaults, and the settings tab. |
src/main.ts |
Registers extensions, commands, and settings; manages the Toggle comment override. |
Settings are searchable from Obsidian's global settings search. Development uses the official Obsidian lint rules; the lint package's Obsidian dependency is overridden to match the API version used by this plugin.
MIT, copyright 2026 Deepal Jayasekara.