Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian
GitHub

GitHub Review

ChristophyChristophy52 downloads

Read, comment on, and approve/request-changes on GitHub issues & PRs inside Obsidian. GitHub stays the source of truth.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates5

Review GitHub issues and pull requests in Obsidian — built for reading and reviewing Markdown spec / design documents, which render poorly on GitHub's web UI.

You read and discuss specs in Obsidian's native Markdown, and every action writes straight back to GitHub. Comments and reviews are made as the token owner, and approvals use GitHub's native PR review, so branch protection recognises them. GitHub stays the single source of truth — nothing is stored locally.

Features

Organised around the spec-review flow:

  • Raise issues from templates — open a new issue that follows the repo's issue templates (Markdown templates and YAML issue forms), with a Write / Preview Markdown editor and @mention autocomplete.
  • Read specs comfortably — PR Markdown files and issue/PR bodies & comments render as Markdown (not diffs); comments appear as cards with avatar, author, and relative time.
  • See the whole change set — every changed file in a PR: Markdown rendered, other files as a colored diff, each collapsible with a "Viewed" checkbox.
  • Review in place — comment, close, or submit a GitHub review (Comment / Approve / Request changes). Existing inline threads show read-only.
  • Ask Claude about it — a built-in, read-only stdio MCP server lets an external Claude client (e.g. Claudian or the Claude Code CLI) see the pull request or issue you're viewing — and any item you have open. The plugin writes the open items to a small store file and registers the server in your vault's .claude/mcp.json automatically, so a client like Claudian picks it up with no manual setup; then just ask "what's this PR about?". Your repo's files come for free, since those clients run with the vault as their working directory. No port, no token, no running service — the client spawns the server on demand with node, and your GitHub token never leaves the plugin. See Connect a Claude client.
  • @mention bots — autocomplete for the repo's bots, to pull one into the review.
  • Find what to review — a queue scoped to the vault's GitHub repo, split into Pull requests / Issues tabs (or a manual repo list; optionally include closed items).
  • Open by URL & stay current — jump to any issue/PR by link; manual refresh plus optional cheap ETag polling.

See docs/ARCHITECTURE.md for the module layout.

Requirements

  • Obsidian desktop (the plugin reads your vault's git remote; it is desktop-only).
  • A GitHub fine-grained personal access token (see Token).
  • For AI chat (optional): an external Claude client such as Claudian or the Claude Code CLI, installed and logged in. The plugin exposes the open PR/issue to it via a local MCP server; everything else works without it.

Installation

From a release (manual)

  1. Download main.js, manifest.json, and styles.css from the latest release.
  2. Put them in <your-vault>/.obsidian/plugins/github-review/.
  3. In Obsidian: Settings → Community plugins, enable community plugins, then enable GitHub Review.

From source (development)

git clone <this-repo> && cd obsidian-github-review
npm install
npm run build                              # produces main.js
./scripts/link-to-vault.sh /path/to/vault  # symlink main.js / manifest.json / styles.css into the vault

Then enable the plugin in Obsidian. Use npm run dev for a watch build and Cmd/Ctrl+R to reload.

Configuration

Open Settings → GitHub Review:

Setting What it does
GitHub token Your fine-grained PAT (stored in the vault's data.json).
Follow this vault's GitHub repository On: scope the queue to the repo this vault belongs to. Off: use the manual list below.
Repositories owner/repo per line, used when not following the vault repo (or none detected).
Include closed issues & PRs Also list closed/merged items.
Auto-refresh interval (seconds) Poll open views with conditional requests; 0 disables.
Claude client integration (MCP) Expose the open PR/issue to a Claude client via a local stdio MCP server (no port, no token, read-only). On by default; Copy config is for non-Claudian clients.

Connect a Claude client (Claudian)

When the integration is enabled, the plugin writes the issue/PR you're viewing to a small store file and writes a tiny stdio MCP server (mcp-stdio.js, embedded in main.js) into its own plugin folder. A Claude client spawns that server on demand with node — no port, no running service, no token (any client that runs Claude Code already has Node). For Claudian you don't configure anything — the plugin registers the server in your vault's .claude/mcp.json (which Claudian reads), so it shows up automatically.

  1. Keep Settings → GitHub Review → Claude client integration (MCP) enabled (it is by default).
  2. Open a pull request or issue in the review tab.
  3. In Claudian, reload once (so it re-reads the config), then just ask — e.g. "what's this PR about?" or "what changed in the file X?". Claudian runs with your vault as its working directory, so it can read your repo's files too.

The agent is told to call get_current_item for "this / the current PR or issue", so it pulls the context without you pasting a link. Other tools: get_changed_file (a file's content/diff) and get_item (pin to a specific item you have open, by owner/repo/number/type). The server is read-only and holds no token — it only reads the store file, which contains the items you have open (no token is written anywhere; it never leaves the plugin).

Other Claude clients (e.g. the claude CLI): use Copy config and add the entry to that client (it's a standard stdio MCP server: command + args).

Heads-up: Claudian keeps its own conversation history and isn't tied to a specific PR/issue — switching review tabs doesn't switch its session, and its history won't auto-load per item. Use get_item to pin a conversation to one open item, or get_current_item for whichever is active.

Token

Use a fine-grained personal access token scoped to the repos you review, with:

Permission Level
Contents Read
Pull requests Read & write
Issues Read & write
Metadata Read

The token is stored in plaintext in the vault's data.json. Don't sync a vault containing it to an untrusted location. GitHub also forbids approving your own PR — the Approve option is disabled then.

Usage

  • Open the review queue from the ribbon (git-pull-request icon) or the command GitHub Review: Open review queue.
  • Click New issue in the queue (or the command GitHub Review: Create new issue) to compose an issue: pick a template (it pre-fills the title, labels and body), edit with Write / Preview tabs, and create it — it opens straight away.
  • Switch between the Pull requests and Issues tabs; click an item to open it (reusing its tab if already open).
  • In a PR: read the description, expand/collapse each changed file, mark files Viewed, read comments, and Comment / Close / Review changes (Comment, Approve, Request changes).
  • To ask Claude about the open item, use an external Claude client (e.g. Claudian) — see Connect a Claude client. The command GitHub Review: Copy MCP server config for Claude clients copies the config for non-Claudian clients.
  • Type @ in any comment box to mention a repo bot.
  • Use the command GitHub Review: Open issue/PR by URL to jump to a specific item.
  • Click Refresh (or rely on auto-refresh) to pull the latest.

Development

npm run dev        # esbuild watch -> main.js
npm run build      # tsc typecheck + production bundle
npm run lint       # eslint
npm run test:unit  # tsc --noEmit + mocha unit tests
npm run test:e2e   # WebdriverIO against a real sandboxed Obsidian (downloads Obsidian on first run)

CI & merge gate

.github/workflows/ci.yml runs lint + build + unit + end-to-end tests (the E2E spin up a real sandboxed Obsidian) on every push and pull request, so a green CI means the requirement tests actually passed.

To require a green CI before merging into main, enable a branch protection rule (or repository ruleset) on main that requires the test status check and "branches up to date". A workflow can't enforce this on its own — it's a one-time GitHub repository setting (Settings → Branches / Rules).

Releasing

Versions follow the Obsidian convention (the git tag is the version, no v prefix):

npm version patch   # bumps manifest.json + versions.json, commits, and tags
git push --follow-tags

Pushing the tag triggers the Release workflow, which builds and attaches main.js, manifest.json, styles.css, and github-review.zip to a GitHub release.

HealthExcellent
ReviewSatisfactory
About
Review GitHub issues and pull requests in Obsidian, render Markdown specs, and post comments and PR reviews directly to GitHub as your token owner. Create issues from repo templates, inspect full file changes with collapsible diffs and 'Viewed' checks, and query open items via a built-in Claude bridge without storing repo data locally.
ReviewIntegrationsMarkdown
Details
Current version
0.1.4
Last updated
Last week
Created
2 weeks ago
Updates
5 releases
Downloads
52
Compatible with
Obsidian 1.7.2+
Platforms
Desktop only
License
MIT
Report bugRequest featureReport plugin
Author
ChristophyChristophychristophy
GitHubchristophy
  1. Community
  2. Plugins
  3. Review
  4. GitHub Review

Related plugins

Custom Frames

Turn web apps into panes using iframes with custom styling. Also comes with presets for Google Keep, Todoist and more.

Importer

Convert your data to Markdown files you can use in Obsidian. Works with Apple Notes, OneNote, Evernote, Notion, Google Keep, and many other formats.

BRAT

Easily install a beta version of a plugin for testing.

Outliner

Work with your lists like in Workflowy or Roam Research.

Local REST API with MCP

Unlock your automation needs by interacting with your notes over a secure REST API.

Fast Note Sync

Real-time sync of your vaults across server, mobile, and web; shareable with anyone; supports REST and MCP integrations to build your personal AI knowledge base.

Maps

Adds a map layout to bases so you can display notes as an interactive map view.

Zotero Integration

Insert and import citations, bibliographies, notes, and PDF annotations from Zotero.

Agent Client

Chat with Claude Code, Codex, Gemini CLI, and more via the Agent Client Protocol — right from your vault.

Various Complements

Complete words similar to auto-completion in an IDE.