pablostanley/efecto-plugin/web-design
Claude Code and agent skill by pablostanley/efecto-plugin
- community
Checking that the SKILL.md file is still in the repository.
Design web pages and app UIs with Efecto — create sessions, build layouts with JSX and Tailwind CSS, manage artboards, and push real-time design changes via MCP tools. Use when asked to "design a page", "build a landing page", "create a website", "design a dashboard", "make a UI", or any visual design task. Requires Efecto MCP server.
Install
npx vskill@latest install pablostanley/efecto-plugin/web-designSKILL.md
Efecto — Design Web Pages with AI
Efecto is a real-time web design tool that AI agents control programmatically. You create a session, the user opens a URL in their browser, and you push design commands that render instantly. Every node maps to a real HTML element styled with Tailwind CSS — web-native, semantic, and pixel-accurate.
Setup
This skill requires the Efecto MCP server. Check if it's available by looking for tools like create_session, add_section, or get_document in your tool list.
If Efecto tools are NOT available, install the MCP server:
Claude Code
Cursor
Add to .cursor/mcp.json:
Windsurf / VS Code / Other MCP Clients
Once installed, you'll have access to 68 MCP tools, including image search and native animation authoring. The MCP server connects your agent to the Efecto design canvas at efecto.app.
How Sessions Work
- You create a session via the MCP server or REST API
- The user opens the returned Efecto URL in their browser
- You push tool calls — each one executes in the browser and returns a result
- The user sees every change live as you build the design
Sessions expire after 2 hours of inactivity. The browser must be connected before tool calls can execute. If you restart or lose the MCP process, call attach_session with the user's current Efecto URL instead of creating a duplicate session.
Quick Start — Build a Page in 7 Steps
Step 1: Create a Session
Returns { sessionId, documentId, designUrl }. Tell the user to open the URL. The session ID is stored automatically — all subsequent tools use it.
If the user already has an Efecto URL with ?session=..., resume it:
Do not call `create_session` again to "reconnect". Use attach_session for an existing URL. A second create_session call refuses to overwrite a paired session unless you pass force: true.
Step 2: Wait for Browser Connection
Blocks until the browser opens the URL and pairs (default 120s). Returns immediately if already paired.
To inspect routing state at any time:
Step 3: Create an Artboard
Returns the artboard ID. Always set className to "flex flex-col" so children stack vertically.
Step 4: Add Sections with JSX
This is the most efficient way to build complex layouts — one JSX string per section.
Step 5: Read Current State
Returns JSX-like markup with data-id attributes on every node. Use these IDs for updates.
Step 6: Fine-Tune with Updates
Step 7: Iterate
Repeat Steps 4-6 to add more sections, adjust styling, and refine the design. The user sees every change in real time.
The Design Tools
Reading State
| Tool | Purpose | |
|---|---|---|
get_selection | Returns currently selected nodes/artboards with JSX subtrees | |
get_document | Returns document as JSX. Scoped modes (preferred on large docs): outline: true (one-line summary per top-level child), artboardId (single artboard), maxDepth (cap descent; 0 = artboard header only, 1 = top-level children only). Response includes an approx-token count. | |
list_artboards | Lists all artboards with IDs, names, dimensions | |
find_nodes | Search nodes by name, text content, type, or className. Returns IDs without subtree — use this to locate before calling get_node_tree. | |
get_node_tree | Serializes one node/artboard subtree only — drill in after outline or find_nodes. |
Creating Content
| Tool | Purpose | |
|---|---|---|
create_artboard | Creates a new artboard (screen/frame) | |
add_section | Adds complex layouts from JSX markup (preferred) | |
add_node | Adds a single node to a parent |
Modifying Content
| Tool | Purpose | |
|---|---|---|
update_node | Updates any node property (className, textContent, tag, style, src, link, elementId, etc.) | |
update_class | Shortcut: replaces only className on a node | |
update_artboard | Updates artboard properties (name, size, background, className, timelineDuration) | |
batch_update | Updates multiple nodes in one call (bulk styling) | |
replace_section | Replaces a node and its children with new JSX |
Animation
| Tool | Purpose | |
|---|---|---|
list_animation_presets | Lists native Efecto animation presets with ids, categories, defaults, and supported controls | |
apply_animation_plan | Applies a validated multi-layer animation plan in one call | |
clear_animations | Clears native animations from nodes, the selection, an artboard, or the whole document |
Organizing Structure
| Tool | Purpose | |
|---|---|---|
move_node | Reparents or reorders a node | |
duplicate_node | Deep-clones a node with fresh IDs | |
duplicate_artboard | Deep-clones an artboard for variations | |
group_nodes | Wraps selected nodes in a frame container | |
ungroup_node | Unwraps a group, moving children to parent | |
reorder_node | Brings to front or sends to back (z-order) |
Display & Selection
| Tool | Purpose | |
|---|---|---|
select_nodes | Highlights nodes for the user to see | |
set_visibility | Shows/hides nodes (like Figma eye icon) | |
delete_nodes | Deletes nodes and their children | |
delete_artboard | Deletes an artboard and all contents |
Alignment & Distribution
| Tool | Purpose | |
|---|---|---|
align_nodes | Aligns multiple nodes (left/center/right/top/middle/bottom) | |
distribute_nodes | Distributes nodes evenly (horizontal/vertical) |
History
| Tool | Purpose | |
|---|---|---|
undo | Undoes the last action (Cmd+Z) | |
redo | Redoes the last undone action (Cmd+Shift+Z) |
Viewport & Document
| Tool | Purpose | |
|---|---|---|
zoom_to_artboard | Zooms viewport to show a specific artboard | |
zoom_to_fit | Zooms to fit all artboards in the viewport | |
set_viewport | Sets viewport zoom level and/or pan position | |
rename_document | Renames the document | |
new_document | Creates a new blank document (replaces current) |
Canvas & Reading
| Tool | Purpose | |
|---|---|---|
move_artboard | Repositions an artboard on the canvas for multi-screen flows | |
deselect_all | Clears the current node selection | |
get_node_tree | Returns JSX for one node/artboard subtree (faster than full document) |
Fill & Export
| Tool | Purpose | |
|---|---|---|
set_fill | Sets the fill (background) of a node or artboard — solid color, gradient, or image. Handles dual-write automatically. | |
export_image | Exports an artboard or node as an image (PNG, JPEG, WebP, SVG). Returns base64 data URL. |
Theme
| Tool | Purpose | |
|---|---|---|
get_theme | Returns the current theme tokens (colors, fonts, radii) and active mode | |
set_theme | Sets theme tokens — colors, fonts, border radii. Accepts partial updates. | |
set_theme_mode | Switches between light/dark/custom modes | |
reset_theme | Resets theme to defaults |
Design Validation
| Tool | Purpose | |
|---|---|---|
audit_design | Audits design against professional quality rules: typography (scale, weight contrast, sizing), color (neutral consistency, pure black, low-contrast combos), spacing (4pt grid, touch targets), and AI slop detection (monotonous layouts). Pass artboardId for one artboard or omit for all. | |
repair_design | Applies safe, deterministic fixes across the document (or one artboard) in one pass: missing w-full, missing flex, arbitrary Tailwind values → inline styles, pure black → zinc-950, touch-target bumps, placeholder images, empty text defaults. Pass dryRun: true to preview. |
Image Search
| Tool | Purpose | |
|---|---|---|
search_images | Search for free stock images (Lummi). No session required. Returns URLs to use with add_node or set_fill. |
Native Animation — Animate Existing Designs
Efecto has a native layer animation system. Do not use Tailwind animate-*, transition-*, or duration-* classes as the animation authoring path.
Workflow for "animate this":
- Inspect the target with
get_selection,get_document,get_node_tree, orlist_artboards. - Call
list_animation_presetsto see supported preset IDs and settings. - Pick the meaningful layers: hero image, headline, supporting copy, CTA, cards, icons, or product visuals. Avoid animating every nested child.
- Call
apply_animation_planwith timed entries. Usemode: "replace"for a new motion system ormode: "append"to add exit/outro animations. - Set
timelineDurationwithupdate_artboardwhen the artboard needs a deliberate playback end. - Use
select_nodesto highlight the changed layers.
Timing defaults:
- Small UI elements: 0.18-0.35s.
- Hero/slide elements: 0.35-0.6s.
- Sibling stagger: 0.04-0.12s.
- Entrances:
ease-out. - Exits:
ease-in.
Preset guidance:
fade-in: subtle supporting content.slide-in: directional reveals, usually 16-48px.scale-in: cards, product shots, badges, modals.blur-in: cinematic/editorial reveals.tilt-in,spin-in,bounce-in,pop-spark: playful or promotional moments.mask-in,fade-mask-in,slide-mask-in,scale-mask-in: high-impact hero, frame, or title reveals. UsemaskStyle: "linear"for clean wipes,"diagonal"for editorial energy, and"iris"for spotlit reveals. UsemaskDirectionfor edge movement andmaskOriginfor iris origin.mask-reveal,iris-reveal: legacy combo aliases that still work, but prefer the explicit mask presets above.- Exit presets (
fade-out,slide-out,scale-out, etc.) should leave enough reading time before they begin.
Text nodes can use appearBy: "word" or "line" for headline reveals. Use "char" only for kinetic title moments; non-text nodes must use "block".
Example:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/web-design/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/pablostanley/efecto-plugin/web-design)