Porting my homegrown GUI to a Claude Desktop mod Developer vicmaster ported a panel from coide, their self-built Electron GUI for Claude Code, into skill-atlas, an open-source Claude Desktop mod built in a day and installed via a symlink. The mod is a read-only pane with two views — "This session" listing project skills and agents from `/.claude/`, globals from `~/.claude/` and skills from installed plugins read from `installed_plugins.json`, and "All projects" scanning up to three levels deep for `.claude/{skills,agents}` — with project entries overriding globals on name collisions. skill-atlas consists of three files: `.claude-plugin/plugin.json`, `hooks/hooks.json` and `hooks/register.tsx`, the last exporting a `register` function that subscribes to `session.start` and `command.run` events. Porting my homegrown GUI to a Claude Desktop mod TL;DR: I used to run Claude Code through coide https://github.com/vicmaster/coide , a GUI I built myself. When I switched to Claude Desktop’s Code tab, the feature I missed most was a boring one: a panel showing every skill and subagent I have, and where each one lives. Claude Desktop supports mods now, so I rebuilt that panel in a day as skill-atlas https://github.com/vicmaster/skill-atlas : a live pane, one .tsx file, installed with a symlink. This post is how a mod is put together, plus the four gotchas I hit. For most of this year, my daily Claude Code driver was a GUI I built myself. coide was my first real Claude Code project: an Electron app wrapping the CLI, with the panels I wished the terminal had. Then Claude Desktop’s Code tab got good enough that maintaining my own wrapper stopped making sense, and I switched. Mostly that was an upgrade. But there was one coide panel I kept reaching for and not finding: a sidebar that listed every skill and subagent available to the session, with descriptions, so I never had to remember whether review-adoption was a global skill or a project one, or fish for an agent’s name in the slash autocomplete. Here’s the thing about retiring a homegrown tool: the code dies, but the features were never the point. They were a spec, written by months of daily use, for what the official tool would eventually need. So when Claude Desktop shipped support for mods plugins that can draw panes inside the app , I didn’t mourn coide. I opened its repo and started porting. The first port is skill-atlas , and it took a day. It’s open source and you can install it with a symlink https://github.com/vicmaster/skill-atlas . The rest of this post is how a mod is actually put together, and the four gotchas that cost me most of that day. What skill-atlas does It’s a pane that lives next to the chat, with two views: - This session shows everything the current session can use: project skills and agents from