Claude Modsunofficial directory

Interface·terminal·MIT

glance

The HTML pages Claude writes and the images it reads, drawn under the tool call.

glance showing a rendered coffee menu page under Claude's Write(menu.html) row in the Claude Code chat
Screenshots from the claude-code-glance repository, MIT license

glance draws what Claude builds inside the Claude Code chat. When Claude writes or edits an HTML file, a headless Chromium renders the page and the picture appears under that tool call; when Claude reads an image, the image appears there too. You check the page without switching to a browser, and nothing is added to Claude’s context.

What it does

  • HTML pages. Every Write, Edit or Read of an .html or .htm file renders the page at 1280 × 900 and trims the blank space under short pages.
  • Images. Every PNG, JPEG, GIF, WebP, BMP or SVG that Claude reads is drawn under the Read row, or under the folded “Read 1 file” line. A GIF shows its first frame.
  • /glance on demand. /glance chart.svg index.html renders any files you name and lays them out side by side, in rows of equal height, each captioned with its file name.
  • Zoom and open. Under each picture, ⤢ widens it to the full chat width and ⤡ shrinks it back. ↗ opens the original file in your default app.
  • Sizing. A picture never grows past its natural size. On a chat 160 columns or wider it takes at most half the width; on a narrower one, nearly all of it.

glance gallery of three rendered pages side by side, each captioned with its file name, after a /glance command

Other mods on this site, such as image-view and claude-mod-images, draw images in the terminal. Rendering the HTML pages Claude writes is what glance adds.

Install

Needs Claude Code 2.1.287 or later on Linux, plus chromium or google-chrome, ImageMagick (magick), jq and git. python3 is optional: with it, glance measures the terminal’s exact cell size for sharper pictures.

There is no marketplace. Clone the repository and load the folder:

git clone https://github.com/Rocha101/claude-code-glance ~/.claude/mods/claude-code-glance
claude --plugin-dir ~/.claude/mods/claude-code-glance

To load it in every session, add the folder’s full path to CLAUDE_CODE_PLUGIN_DIRS in the env block of ~/.claude/settings.json, separating several folders with :. The README also offers a one-line installer that pipes the repo’s install.sh into bash; read the script before you run it that way. The plugin is glance, version 0.1.0.

Then open a new session and ask Claude to write an HTML page. Claude only shows you pictures it reads, so the README suggests a line for ~/.claude/CLAUDE.md: tell Claude to Read any image it wants to show you, and to screenshot a URL with headless Chromium and read the PNG.

Settings go in the same env block. GLANCE_MODE=image forces real pixels and GLANCE_MODE=cells forces block art. GLANCE_CELL_PX sets the image pixels per terminal column (default 12; higher draws smaller pictures). GLANCE_CELL_RATIO overrides the cell’s height-to-width ratio, which glance otherwise reads from the terminal or sets to 2.25.

How it works

glance hooks four events. session.start registers /glance and command.run handles it. tool.call lets each tool call run first, then looks only at the tool name and file path: a Write, Edit or Read of an HTML file, or a Read of an image, gets rendered unless the call was denied or failed. Bash and every other tool are ignored. The tool result goes back to Claude unchanged, so the pictures cost no tokens and Claude never sees them.

Rendering runs as local processes. For a page, glance resolves the path with realpath and tries chromium, google-chrome-stable and google-chrome in turn, screenshotting the file:// URL headless in a 1280 × 900 window with a 30-second timeout. ImageMagick then crops the empty band below the content. For an image, ImageMagick reads its size and converts the first frame to a PNG of at most 1600 px a side.

glance makes no network calls itself. Chromium loads the page as a browser would, scripts included, so a page that links web fonts, CDN scripts or remote images fetches them when it renders.

Every render goes to /dev/shm as claude-glance-<n>.png, with resized copies beside it and, for block art, a raw .rgb file. /dev/shm is held in memory. glance never deletes these files: they stay until you remove them or reboot.

ui.render draws the pictures under the ToolResult, ToolGroup and CommandOutput rows. In Ghostty, kitty or WezTerm, detected from TERM and TERM_PROGRAM, it sends a real image through the kitty graphics protocol. Elsewhere it builds colour block art, four pixels per character cell. With python3, it reads the cell size in pixels from Claude Code’s terminal, at most every five seconds, and resizes each picture to the exact pixels of its box so small text stays readable. The ↗ button runs xdg-open on the original file.

Limitations

  • Pages are captured at 1280 × 900. Anything below the first screen is not shown.
  • Terminal only. On other surfaces the code still renders but prints a one-line note instead of the picture.
  • Terminals without the kitty graphics protocol get block art. So does tmux, which passes no graphics through.
  • /glance splits its arguments on spaces, so a path that contains a space does not work.
  • The author doesn’t name a platform, but the code is written for Linux: renders go to /dev/shm, the cell-size probe reads /proc, and ↗ uses xdg-open. Where /dev/shm does not exist, as on macOS, every render fails.

Similar Claude Mods

The whole directory →