Skip to content

Saqoosha/CCPlanView

Repository files navigation

English | 日本語

CCPlanView

CCPlanView icon
A lightweight macOS markdown viewer for Claude Code plans.

CCPlanView screenshot showing diff visualization

Features

  • GitHub-Flavored Markdown - Render .md files with beautiful GitHub-style formatting
  • Syntax Highlighting - Code blocks with highlight.js support for all major languages
  • Diff Visualization - Green for added lines, red for deleted lines
  • Dark/Light Mode - Automatically switches based on system appearance
  • URL Scheme Refresh - Trigger on-demand refresh via ccplanview://refresh?file=...
  • Multiple Open Methods - File > Open, drag & drop, Finder "Open With", or terminal command

Installation

  1. Download the latest .dmg from Releases
  2. Open the DMG and drag CCPlanView.app to Applications
  3. Launch the app and open a markdown file

Usage

Opening Files

# Open a file from terminal
open -a "CCPlanView" /path/to/file.md

# Or drag & drop a .md file onto the window

Use with Claude Code Hooks

CCPlanView works great as a plan viewer for Claude Code. When Claude generates a plan file (via ExitPlanMode), a hook automatically opens it in CCPlanView with diff highlighting.

Just launch the app — if Claude Code is installed, CCPlanView will offer to configure the hook automatically.

The following hook is added to ~/.claude/settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "ExitPlanMode",
        "hooks": [
          {
            "type": "command",
            "command": "/Applications/CCPlanView.app/Contents/MacOS/notifier",
            "timeout": 10
          }
        ]
      }
    ]
  }
}

Note: The path reflects the actual app location at install time.

Custom Plans Directory

By default, the notifier looks for plan files in ~/.claude/plans/. To use a project-local directory, add a plansDirectory setting to your Claude Code configuration:

// .claude/settings.json (project-level, shared with team)
{
  "plansDirectory": "./.plans"
}

The notifier checks settings in this order:

  1. .claude/settings.local.json (project, personal)
  2. .claude/settings.json (project, shared)
  3. ~/.claude/settings.json (global)

Development

Requirements

Build from Source

git clone https://github.com/Saqoosha/CCPlanView.git
cd CCPlanView
./scripts/build.sh Release

# The app is located at:
# build/DerivedData/Build/Products/Release/CCPlanView.app

Build Commands

./scripts/build.sh          # Debug build
./scripts/build.sh Release  # Release build
./scripts/package_dmg.sh    # Package DMG (includes notarization)
./scripts/release.sh 1.0.0  # Release new version

Tech Stack

Project Structure

Sources/
├── CCPlanView/          # Main app (SwiftUI + WKWebView)
│   └── Resources/       # HTML/CSS/JS for markdown rendering
└── notifier/            # CLI tool for Claude Code hooks

License

MIT

About

Lightweight macOS markdown viewer for Claude Code plans

Resources

Stars

Watchers

Forks

Contributors