Make it yours
Themes, layout tweaks, and quality-of-life fixes for the AI sites you live in — recolor the whole page or reshape a single screen.
Free & open source
Marhiv is a Chromium extension that lets you layer themes, shortcuts, and automations onto ChatGPT, Claude, and Gemini — with curated plugins, or your own scripts when you want full control.
Free & Apache-2.0 · Chromium (Chrome & Edge) · No account required
Why Marhiv
Marhiv is the customization layer that sits on top of the tools you already live in.
Themes, layout tweaks, and quality-of-life fixes for the AI sites you live in — recolor the whole page or reshape a single screen.
A community registry of vetted plugins you can browse and toggle in a click — installable, configurable, and safe by default.
Write or paste your own site-matched scripts when no plugin exists — full control when you want it.
One place to manage enhancements across every AI chatbot, instead of one bookmarklet per site. Adding a new tool is a small, declarative change.
The hybrid model
Both run through the same content-script host on supported AI sites, sharing one documented Enhancement API — so anything a plugin can do, a userscript can too.
Curated, first-party enhancements that ship in the repo and publish to a community registry. Each declares the AI sites it targets and what it does. Browse, toggle, and configure them from the on-page panel.
Sandboxed, user-authored scripts matched to specific sites, for the cases curated plugins do not cover. They run through the same shared API as plugins, so anything a plugin can do, a userscript can too.
Built in, today
The extension already ships these — enable or disable each live from the on-page panel. A community registry to install more is on the roadmap.
Recolors the host AI site in the Marhiv alpenglow palette.
Beloved editor palettes for your chat UI — Tokyo Night, Catppuccin-style Rosé Pine, Gruvbox, One Dark, Dracula, Nord, Everforest, Solarized.
Adds a native item under "New session" on claude.ai/code — a worked example of the Slots engine targeting one route.
A live route readout and debug-state export, plus a network recorder — a plugin that adds its own UI and reads app state.
Cross-tool
The plugin model is built so adding a new site is a small, declarative change. Starting set:
For builders
Plugins never touch raw selectors. They go through abstractions designed so a host site’s redesign is a one-file fix — not a rewrite.
The shared contract both plugins and userscripts use to read and modify the chat UI, register commands, add UI, and persist settings. The keystone abstraction.
Plugins map a semantic slot name to live DOM through per-route resolvers, with presence tracking that survives the host SPA re-rendering. A host redesign is a one-file fix.
Matches the URL against a site’s routes and drives enter/leave behavior as the SPA navigates, each scoped to an AbortSignal for clean teardown.
The settings panel renders into a shadow root, fully isolated from the host page’s CSS — so Marhiv never fights the site it enhances.
Built to be extended
Marhiv is open source and built to be edited with Claude Code. The repo ships a dedicated set of skills that scaffold the common extension points — so you, or your agent, go from idea to pull request without spelunking the internals.
/plugin-create Scaffold a new built-in plugin, wired into the registry. /panel-page-create Add a settings page to the on-page panel. /host-element-access Reach a host element safely through the Slots engine. /state-management Add persisted or ephemeral state the right way. Clone it, load the unpacked extension, and shape the AI chatbots you use every day. Contributions and ideas welcome.