A Figma plugin that runs Claude as a coding agent inside design files, with your design system pre-loaded as context.
Every design system audit starts the same way: open a file, click through frames one by one, and squint for the raw hex color hiding among the tokens. It's the kind of work that's tedious precisely because it's mechanical, not because it's hard. I kept wondering what it would look like if that checking loop wasn't mine to run anymore.
Claude Code could already read a codebase, plan a change, and execute it, so the question became whether the same loop could run on a canvas instead of a file tree. Figma's Plugin API gives full read and write access to a file, which meant an agent could, in principle, inspect a selection, reason about it, generate the exact API calls needed, run them, and look at what came back, the same describe, act, observe cycle, just aimed at layers and variables instead of functions and files.
Clam is that loop wired up. A WebSocket bridge connects the plugin sandbox running inside Figma to a local server talking to Claude. Type "audit text styles" or "rebuild this screenshot in our components," and Claude inspects the file, plans, writes Plugin API code, executes it on the canvas, reads the result, and keeps iterating until the goal is actually met, not just attempted once and handed back.
Worth noting: this was built before Figma shipped its own agent features, and before Figma's MCP server made it possible to run Claude Code inside Figma directly. At the time, wiring Claude into the Plugin API through a custom bridge was the only way to get this kind of agentic loop running on a design file.
A few kinds of work, each demoed below: auditing what's already on the canvas, running a dedicated accessibility skill, and refactoring existing layers toward the design system.
Inspection & auditing — running a Mode Sanity check to catch variables missing from Light or Dark, and grouping un-tokenized text by current usage.
Accessibility audit — a dedicated skill that runs an accessibility pass over a frame and surfaces the findings directly on the canvas.
Refactoring — renaming shift types directly inside the design, no manual relabeling of every instance across the file.
The hardest part wasn't getting Claude to write Plugin API code, it was getting it to trust what it saw after running it. An agent that inspects, acts, and re-inspects catches its own mistakes in a way a one-shot script never can, and that loop is the entire reason Clam feels less like a macro and more like handing off a task to someone who checks their own work.