design-review
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@design-reviewReview the latest homepage design artifact"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
design-artifact-loop
Render-grounded, non-slop UI design artifacts for coding agents.
"Design slop" is what you get when a model has no committed design system — it falls back to the statistical average of web UIs: generic gradient hero, three equal cards, default indigo, Inter everywhere. This plugin fixes that with author-then-conform:
Commit a concrete design system before any markup — pick one of ~18 vendored token systems (or author a fresh one) and reference every colour/size via
var(--…).Write a single self-contained static HTML artifact — no JS, no external network beyond a declared font CDN.
Iterate against real evidence, not self-assessment — the
design_reviewMCP tool re-renders the artifact headlessly (1440×900 + 390×844), runs a deterministic linter (token-trace, no-JS, network lockdown, font denylist, blank/overflow detection), and folds in findings from an independent vision critic that reads the rendered PNG. A disk-backed state machine carries findings forward across rounds and hard-caps the loop at 6 rounds — a clean lint alone never ships; the critic must have reviewed the exact artifact version (enforced via a content-hash review token).
Components
skills/design-artifact-loop/— the skill: the loop protocol (SKILL.md), ~18 vendored design systems (DESIGN.md+tokens.csseach; Apache-2.0, seedesign-systems/ATTRIBUTION.md), and good/slop fixture pairs.server/— thedesign-reviewMCP server (stdio): linter, renderer, and the round/cap state machine. 100+ tests.
Related MCP server: BWVI
Requirements
Node.js ≥ 18 — runs the MCP server (a committed self-contained bundle,
server/dist/index.mjs; no install step). Bun is only needed for development (tests + rebuilding the bundle).Chromium on
PATH(or setCHROMIUM_BIN) — used for headless rendering. Egress during render is blocked at the browser layer via--host-resolver-rules(only the declared font CDN resolves), so the artifact under review cannot phone home even if the linter misses a construct.
Snap chromium note (Ubuntu): snap confinement denies chromium access to top-level dot-directories under
$HOME(e.g.~/.cache/...), which surfaces asrender-blankfindings with 0-byte screenshots. Project-nested paths like~/myproject/.design-artifact-loop/work fine; if your loop root must live under a top-level dot-dir, pointCHROMIUM_BINat a non-snap chromium.
Install (Claude Code)
claude plugin marketplace add davekim917/design-artifact-loop
claude plugin install design-artifact-loop@design-artifact-loopThe skill triggers on "design a …", "mock up a …", "make me a UI". Artifacts and
review state live under .design-artifact-loop/<id>/ in your working directory
(override with DESIGN_ARTIFACT_LOOP_ROOT).
Install (Codex CLI)
The repo is also a native Codex plugin (.codex-plugin/plugin.json declares the
skill + MCP server; .agents/plugins/marketplace.json makes the repo its own
marketplace):
codex plugin marketplace add davekim917/design-artifact-loop
codex plugin add design-artifact-loop@design-artifact-loopOn Codex versions without the plugin system, ./install-codex.sh wires the same
two pieces by hand (skill mirror into ~/.agents/skills/ + codex mcp add).
The loop root resolves against the MCP server's working directory (Codex's launch
dir) — same DESIGN_ARTIFACT_LOOP_ROOT override applies.
Development
bun install
bun test server/ # linter, state machine, render classification, corpus integrity
bunx tsc --noEmit # typecheck
bun run build # rebuild server/dist/index.mjs after editing server/*.ts (commit it)Design notes
The linter is advisory; the render sandbox is the boundary. Regex checks give fast feedback and keep the delivered artifact clean, but egress enforcement lives in the chromium invocation's DNS allowlist — so the linter doesn't have to chase every fetch-bearing HTML construct.
Critic findings can't be faked away. Findings are tied to a content hash of the artifact version the critic actually reviewed; stale findings are dropped, absent critic findings stay open until a fresh critic pass clears them, and a clean artifact cannot ship until the critic has reviewed that exact version.
State is disk-atomic (write-temp-then-rename under an advisory lock), so overlapping calls on the same run id cannot corrupt the trace.
Extracted from NanoClaw, where it ships as a container skill for Claude/Codex/OpenCode agents.
License
MIT (see LICENSE). The vendored design-system corpus is Apache-2.0 — see
skills/design-artifact-loop/design-systems/LICENSE and ATTRIBUTION.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/davekim917/design-artifact-loop'
If you have feedback or need assistance with the MCP directory API, please join our Discord server