4 min read

The tasks AI makes worth doing

For fifteen years I've built a custom Chrome theme at every company I've worked at, and always built it badly, because it was never worth doing well. This time AI made it the best version I've shipped, for the same one evening of work. The theme is trivial. The category of task it unlocks isn't.

I’ve built a custom Chrome theme at almost every company I’ve worked at or run. Fifteen years of it. It’s a small ritual with two real jobs: a little internal team branding, and a way to tell my three-plus Chrome profiles apart at a glance so I stop pasting a work link into a personal window. Each profile gets the company’s colors. The window tells me where I am before I read anything on the screen.

And for fifteen years I built it badly. Pick a few hex codes by eye, hardcode them into a theme manifest, sideload it, forget it. Within a quarter the real brand had moved and my theme hadn’t. It was a cheap, slightly embarrassing pleasure, and it was never worth doing properly, so I never did. Worth doing, not worth doing well. That gap is the whole post.

#The same evening, a different result

This time the theme is the best one I’ve ever made, and it took the same one evening. The difference is that none of the colors are typed by hand.

They sync from the app’s live design-system tokens, the same stylesheet the product itself ships, with a newer AI-accent palette layered in from the design team’s Figma. The whole path runs at build time:

app design tokens  +  Figma accents
  -> map to Chrome theme keys
  -> validate against a Zod contract   (a renamed token fails the build, loudly)
  -> sign with its own key, self-host
  -> managed browsers poll and auto-update

The Zod contract 1 means a malformed theme can’t ship; the signed, self-hosted extension reaches the team’s managed browsers through the Workspace admin console 2 , so one merge updates every browser within a poll window. Dark and light variants, calendar-versioned releases, a CI pipeline that mirrors the main app’s. About four hundred lines of TypeScript, no bundler, no runtime, no permissions. The artifact is four kilobytes of color; the pipeline around it is the entire point.

Two sources, the app's design tokens and the Figma accents, both feed the step that maps them to Chrome theme keys. A Zod contract validates the result; a renamed token fails the build loudly. Valid themes are signed with the project's own key and self-hosted, and managed browsers poll and auto-update.

Two token sources fan in; a Zod contract gates the build; signed and self-hosted, it reaches every managed browser on the next poll.

I could always build the theme. What changed isn’t the doing. It’s the ratio: an evening of work that now maintains itself instead of decaying in a quarter.

#What actually changed

The capability was never the blocker. The token sync, the validation contract, the signing key, the managed-deploy pipeline: none of it is new technology, and none of it was beyond me on any given Tuesday of the last decade. What stopped me was the ratio. The good version cost a week of fiddly plumbing to save a quarter of drift, and that math never closed. So I shipped the bad version, every time, for fifteen years.

AI closed the math. The fiddly plumbing I’d never spend a week on is exactly the kind of scaffolding a model writes in an afternoon: wire the token extraction, sketch the validation schema, stand up the signing and the release CI, fix the parts that break. The evening of taste, picking the colors, deciding which token paints which surface, stayed mine. The week of plumbing that always killed it collapsed to a couple of hours of review. The honest cost is that the pipeline is now a small thing that can break, one I have to keep alive. I’ll take that trade every time: a maintenance surface I understand over a manual chore I’ll always skip.

That’s the move, and it’s bigger than one theme. Everyone has the same list, personal or team:

  • the script that renames every junk screenshot into something you can search
  • the one page that pulls your scattered data into a view instead of six tabs
  • the commit-message linter for the repo only you touch
  • the migration that pays back in two quarters and never gets prioritized

They don’t get built because the effort never clears the bar, not because the value isn’t real. AI lowers the bar far enough that a pile of them clears it at once.

So the question I find more useful than “what can AI build for me” is the quieter one underneath it: what was always worth doing that I finally get to do? The Chrome theme is a silly answer. The list behind it isn’t.

Notes

  1. The validation contract is a Zod schema that doubles as the single source of truth: it both gates the build and generates the manifest JSON-schema for editor autocomplete. The output is a standard Chrome theme manifest, color keys and tints, no code.
  2. Self-hosting a signed extension and pushing it to managed browsers is a documented Google Workspace flow: an enterprise policy points at a self-hosted updates.xml, and managed Chrome instances poll it and auto-update. See Google's Chrome Enterprise extension management docs. No Web Store listing, no review queue, own keys, own domain.