aem-skill-create-block-from-figma-without-mcp

Scaffolds AEM EDS xwalk block TypeScript, CSS, and JSON model files from Figma designs.

Updated Apr 6, 2026
One-click install
npx skills add https://github.com/capella-hotel-group/capella-hotel-group-poc --skill aem-skill-create-block-from-figma-without-mcp-capella-hotel-group
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: aem-skill-create-block-from-figma-without-mcp
Source: https://github.com/capella-hotel-group/capella-hotel-group-poc/tree/main/.github/skills/aem-skill-create-block-from-figma-without-mcp
Command: npx skills add https://github.com/capella-hotel-group/capella-hotel-group-poc --skill aem-skill-create-block-from-figma-without-mcp-capella-hotel-group

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Manually translating a Figma design into an AEM Edge Delivery Services xwalk block requires writing three coordinated files (TypeScript decorator, scoped CSS, and component model JSON) plus registering the block and verifying the build, which is repetitive and error-prone. ## Core Features & Use Cases - Figma-to-block scaffolding: Parses a Figma URL (file key and node ID), infers structure type (simple model vs. container+filter), maps Figma elements to AEM field components, and generates all three block files under src/blocks/<block-name>/. - Multi-state handling: Detects state frames (hover, loading, step-N) from Figma, the developer brief, or multiple node IDs, then asks the developer to confirm the trigger type before generating CSS-only, JS-driven data-state, or multi-step data-step implementations. - Registration and verification: Updates src/models/_section.json, runs npm run build:json and npm run build, fixes compile errors, and produces a ready-to-paste content entry prompt for AEM Copilot. - Use Case: A developer pastes a Figma URL for a new hero banner; the skill generates hero.ts, hero.css, and _hero.json with mapped fields, registers the block in the Universal Editor, verifies the Vite build passes, and outputs demo content values. ## Quick Start Ask the agent to create an AEM block named hero-banner from your Figma design URL, optionally including a short description of interactions or states.

Frequently Asked Questions about aem-skill-create-block-from-figma-without-mcp

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create an AEM EDS block from a Figma design?▼

Provide a kebab-case block name and a Figma URL containing the file key and node ID. The skill analyzes the Figma node, maps elements to AEM field components, and generates the TypeScript, CSS, and model JSON files under src/blocks/<block-name>/.

How to scaffold an AEM xwalk block without a Figma MCP server?▼

This skill works without any MCP server. It parses the Figma URL directly, uses the developer's text brief and frame analysis to infer structure and fields, then scaffolds all three block files and registers them in the section filter.

Does the skill support multi-state components like hover or loading?▼

Yes. It detects state frames from Figma, the brief, or multiple node IDs, then asks whether states are CSS-only, JS-driven, or visual reference only. JS-driven states use a data-state attribute pattern; step sequences use data-step.

What is the field limit for generated AEM component models?▼

Generated models are limited to 4 fields per block. If Figma analysis infers more than 4 fields, the skill stops and asks the developer to prioritize before generating the model JSON.

Why is my new block not appearing in the Universal Editor?▼

The block must be added to the filters array in src/models/_section.json and the root component JSON files must be regenerated with npm run build:json. The skill performs both steps; if build:json fails, run it manually.

What happens if the block folder already exists?▼

The skill checks whether src/blocks/<block-name>/ already exists before writing. If it does, it asks the developer to confirm overwriting all three files or abort, and never proceeds without confirmation.