Developer Tools 4 min read·

Why Contra Collective Built ShellShade

The cross-terminal theme manager we shipped because we got tired of porting color schemes by hand every time a new engineer joined.

Engineers care a lot about terminal colors. This is not a confession — it is load-bearing. The colors you stare at for eight hours a day shape how tired you are at hour nine, how accurately you parse log output at 2am, how quickly you spot a diff that does not belong. Good terminal themes are not vanity. They are a piece of the job.

The problem is: terminal theming across the modern landscape is terrible. iTerm2 stores themes in its own XML plist. Alacritty wants YAML. Windows Terminal wants JSON. Kitty has its own .conf format. Hyper accepts JavaScript. GNOME Terminal wants dconf. Nobody agrees on anything, and every terminal has its own "how do I live-preview this?" ceremony. If you ever work across more than one of them, you have spent an afternoon copy-pasting hex values from GitHub and cursing.

ShellShade exists to end that afternoon.

The specific problem we had

Contra Collective runs client engagements across radically different environments. A given month might have us in macOS iTerm2 for one client, Windows Terminal on a Citrix VDI for another, Alacritty inside a Linux dev container for a third. Every time a new engineer onboarded, we handed them a dotfile repo and said "apply the theme." That worked — for iTerm2. For the other terminals they had to translate by hand, and most of them gave up and used the default.

The default theme is fine. But when engineers get assigned to a client whose logs are dense and whose infrastructure is unfamiliar and whose on-call rotation is aggressive, "fine" starts costing money. We decided to solve the tooling problem instead of hoping engineers would solve it themselves.

What ShellShade actually is

ShellShade is a single Go binary. You install it once, run shellshade browse, preview themes live against your current terminal, and apply one with a single command. The apply step is the magic: ShellShade reads the theme's canonical color definition and writes out whatever format your current terminal actually wants. iTerm2 gets plist, Alacritty gets YAML, Windows Terminal gets a JSON patch, Kitty gets its conf. You never see the translation.

The theme library is curated rather than exhaustive. We ship the themes we have actually used in production at Contra Collective — the ones we know hold up across long sessions, work for colorblind accessibility, and render correctly across the five or six terminals we regularly work in. You can add your own library URL and pull from any upstream source if you want more.

  • Zero dependencies. Single binary. No Node, no Python, no Homebrew-of-the-month.
  • Live preview. Themes render against your real shell before you apply. No mental-model gymnastics required.
  • Cross-terminal apply. Write the canonical theme, ShellShade handles the per-terminal translation.
  • Automatic backup. The previous theme is always one command away. No engineer has ever lost a carefully-tuned color setup.
  • Import and export. Pull themes from the major community repositories, export yours back to any supported format.

Why we open-sourced it

Three reasons, in ascending order of honesty. One: the theme community on GitHub is one of the friendliest corners of developer culture, and we wanted to participate rather than silo. Two: terminal tooling built by an agency for its own use is exactly the kind of thing nobody else can build, because nobody else has our cross-terminal pain and the motivation to fix it. Three: we want engineers who eventually end up at companies that hire agencies to remember that when a client asked them "who should we work with on this AI thing," Contra Collective ships tools they actually use every day.

Where it fits

ShellShade is the smallest tool on the Contra Collective roster by design. It does one thing. It does it without asking you to invest attention into it. Once it is installed you mostly forget it exists until the next time you rebuild a machine and remember that your terminal does not look like garbage because of this binary. That is the bar for a good tool.

If you work across multiple terminals — or even if you just want an easier way to try themes in your one terminal — install ShellShade. The rest of the Contra Collective toolchain is built on the same principle: tools that reach agency-quality bar first, and get open-sourced once they do.

Tired of porting themes by hand?

ShellShade handles the translation across every terminal you use. One binary, live preview, free and open source.