Publish HTML or Markdown from Claude to display.dev, choose who can view it, and act on reviewer comments. One install gives Claude:
- the display.dev skill: publish, browse, search, read, edit, copy, and share artifacts with public, private, or company access;
- Visualize: create, explore, refine, and review on-brand HTML reports, plans, diagrams, decks, and dashboards; reference design systems load when selected;
- the display.dev MCP server (
https://api.display.dev/v1/mcp); /display-dev:feedback: lists your artifacts with open comments, shows a plan for each thread, and after you approve it, edits the artifact, replies, and resolves the threads. With no comments, it offers to ask a reviewer or to wait for comments;- a publish guard hook that scans a publish for secrets (API keys, tokens, private keys). It blocks a public publish and asks before any other publish;
- a comment note hook that tells you at session start which of your artifacts have new comments. It reads only open-thread counts, never comment text.
Claude Code
/plugin marketplace add display-dev/skill
/plugin install display-dev@display-devThen run /mcp and complete OAuth for plugin:display-dev:display-dev.
Claude.ai, Claude Desktop, and Cowork: add the plugin from the directory, or under Customize › Plugins. Claude.ai loads the skills and the command but not the hooks. Connect the display.dev connector there for the tools.
The hooks run in Claude Code and in Cowork on your own computer. The comment note needs the dsp CLI.
| Part | Runs | Sends or fetches | Stores |
|---|---|---|---|
| display.dev skill | The bundled helper scripts, the installed dsp CLI, and a bundled jq binary for JSON |
Requests to api.display.dev for the actions you ask for. An anonymous publish sends the file to https://api.display.dev/v1/public/artifacts. |
Nothing. dsp keeps its own sign-in. |
| Visualize | The bundled scripts (Node) for catalog retrieval, palette, contrast, diagram, and image checks | Selected reference files from raw.githubusercontent.com/display-dev/visualize at the immutable catalog revision in skills/visualize/design-systems/catalog-source.json. Clean is bundled; previews are fetched only when requested. Image generation calls only the provider you configure. |
Created artifacts in your project; downloaded reference files in ~/.cache/visualize-skill/catalog by default (VISUALIZE_CATALOG_CACHE_DIR can relocate it). Uninstalling the plugin does not remove this cache. |
| MCP server | Nothing on your machine | Tool calls to https://api.display.dev/v1/mcp after you sign in with OAuth, with the header X-Client-Source: display-dev-claude-plugin@<version> |
Nothing |
| Publish guard hook | hooks/publish-guard.sh before each Bash command and each display.dev publish tool call |
Nothing. It reads only the files named in a publish command, or the content of an MCP publish, and checks them for secrets on your machine. |
Nothing |
| Comment note hook | hooks/comment-digest.sh at session start, only when dsp is installed |
One request through dsp to api.display.dev: your 100 most recently updated artifacts with their names and open-thread counts. It never fetches comment text. |
The open-thread count and name of each of your artifacts with open threads, in Claude Code's plugin data folder (open-thread-counts.json) |
/display-dev:feedback |
dsp commands or MCP tool calls |
Reads the metadata, open comments, and source of the artifact you choose. After you approve the plan, publishes the new version and posts replies and resolves to api.display.dev. |
A temporary copy of the artifact source while it edits |
skills/display-dev/ is an exact copy of a pinned commit of display-dev/skill. skills/visualize/ comes from the canonical Visualize skill, with two plugin-only entrypoint adaptations applied by tools/prepare-visualize.mjs: exact ${CLAUDE_PLUGIN_ROOT} script preapprovals, and helper-path guidance that uses quoted absolute paths. Never edit bundled skills by hand. Change shared skill behavior upstream; maintain these two adaptations here. To update a pin, edit sources.lock and run:
tools/sync.sh # copy the pinned skills into skills/
tools/sync.sh --check # CI: fail when skills/ has drifted
bash tests/hooks.sh # offline hook tests
node --test tests/visualize-permissions.test.mjsRaise version in .claude-plugin/plugin.json with every release, together with the X-Client-Source suffix there and in commands/feedback.md. CI checks that they match.
Apart from those two entrypoint adaptations, Visualize is copied unchanged. Its scripts and references retain the pinned bytes. It bundles the catalog index and Clean fallback; scripts/catalog.mjs retrieves other selected references from the separately pinned catalog revision and caches them locally. The Visualize source pin in sources.lock and its catalog revision serve different purposes; neither follows a moving branch at runtime.
The bundled skill is now named visualize (previously visualize-lite). In Claude Code, use /display-dev:visualize in place of /display-dev:visualize-lite.
Display's privacy policy: https://display.dev/privacy
MIT