Agent skill

Ue Component Model

by adobe in adobe/skills

Use this when the user mentions component models, component definitions, component filters, block configuration for the Universal Editor, UE block setup, adding a new block to UE, configuring block…

Apache-2.0Auto-check passed

Install Ue Component Model

skills CLI
$ npx skills add adobe/skills --skill ue-component-model -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install adobe/skills ue-component-model --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/aem/edge-delivery-services/skills/ue-component-model .claude/skills/ue-component-model && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ue-component-model
GitHub stars
196
Token cost
~2.4k tokens
SKILL.md length
1,012 words
Files
5 (incl. references)
Skills in repo
65
Repo updated
First seen
Licence
Apache-2.0

At a glance

Use this when the user mentions component models, component definitions, component filters, block configuration for the Universal Editor, UE block setup, adding a new block to UE, configuring block…

  • Works in 5 steps: Understand the Block → Determine the Block Type → Design the Model Fields → …
  • Mentions component models
  • SKILL.md covers When to Use, Workflow, Reference Files and Common Pitfalls
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Ue Component Model is an agent skill from adobe/skills. Use this when the user mentions component models, component definitions, component filters, block configuration for the Universal Editor, UE block setup, adding a new block to UE, configuring block properties or block authoring fields, or wants to create an EDS/Franklin block with Universal Editor support, modify block fields, or add a block to the section filter. Covers creating and editing the three JSON files that control how AEM Edge Delivery Services blocks appear and behave in the Universal Editor —…

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `package.json`, `references/architecture.md` and `references/examples.md`).

It works with Adobe Experience Manager. The repository describes itself as: Adobe Skills for Agents. The licence is Apache-2.0.

When your agent uses it

  • Mentions component models
  • Component definitions
  • Component filters
  • Block configuration for the Universal Editor

Example prompts

  • “/ue-component-model”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Understand the Block
  2. Determine the Block Type
  3. Design the Model Fields
  4. Generate the Configuration
  5. Validate

What it can do on your machine

Read from SKILL.md and the folder at commit 985c436. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ue Component Model loads about 2.4k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 152 tokens; SKILL.md has 1,012 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~152
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~11k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from adobe/skills at commit 985c436, republished under its Apache-2.0 licence (© adobe). 1,012 words, ~2,401 tokens.

Download SKILL.mdSave it as .claude/skills/ue-component-model/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
ue-component-model
description
Use this when the user mentions component models, component definitions, component filters, block configuration for the Universal Editor, UE block setup, adding a new block to UE, configuring block properties or block authoring fields, or wants to create an EDS/Franklin block with Universal Editor support, modify block fields, or add a block to the section filter. Covers creating and editing the three JSON files that control how AEM Edge Delivery Services blocks appear and behave in the Universal Editor — component-definition.json, component-models.json, and component-filters.json.
license
Apache-2.0

Universal Editor Component Model Configuration

This skill helps you create or edit the three JSON configuration files that control how AEM Edge Delivery Services (EDS) blocks appear and behave in the Universal Editor (UE):

  1. component-definition.json — Registers blocks in the UE component palette
  2. component-models.json — Defines property panel fields for each block
  3. component-filters.json — Controls where blocks can be placed

When to Use

  • Creating a new block that needs UE authoring support
  • Adding/modifying fields on an existing block's property panel
  • Registering a block so it appears in the author's component palette
  • Setting up container blocks with child items
  • Adding block variants/style options

Workflow

Step 1: Understand the Block

Before generating any configuration, read and analyze:

  1. The block's JS file (blocks/<name>/<name>.js) — understand what content the decorate(block) function expects:

    • What does it read from the block div? (images, links, text, classes)
    • Does it expect a flat structure or rows of items?
    • Does it use block.querySelector('a') (links/URLs), block.querySelector('picture') (images), etc.?
    • Does it check for CSS classes/variants?
  2. The block's CSS file (blocks/<name>/<name>.css) — look for variant-specific styles.

  3. Existing config — check if entries already exist:

    • Search component-definition.json for the block ID
    • Search component-models.json for the model ID
    • Search component-filters.json for the block in the section components list
    • Check for a blocks/<name>/_<name>.json distributed config file
Step 2: Determine the Block Type

Based on the JS analysis:

  • Simple block: One component with its own fields. Most blocks are this type.

    • Example: Hero, Embed — single model, no children
  • Container block: Has repeatable child items (cards, slides, tabs).

    • Clue: JS iterates over block.children or creates items from rows
    • Needs: container definition + item definition + filter
  • Key-value block: Configuration-style block (2-column key-value pairs).

    • Clue: Each property is independent, not a grid of content
    • Needs: "key-value": true in template
Step 3: Design the Model Fields

Map the block's content expectations to component model fields. Read references/field-types.md for the full field type reference.

Common field mappings:

Block expects...Use component typeNotes
An imagereference (name: image)Pair with text field named imageAlt
A URL/linkaem-content (name: link or url)For page links and external URLs
Rich text contentrichtextFor formatted text with headings, lists, links
Plain text (single line)textFor titles, labels, short strings
Plain text (multi-line)textareaFor descriptions, notes, long text without formatting
Heading level choiceselect with h1-h6 optionsName it titleType to auto-collapse with title
Style variantsmultiselect (name: classes)Values become CSS classes on block div
Multiple togglescheckbox-groupFor multiple independent boolean options
Boolean togglebooleanFor show/hide options
Number valuenumberFor counts, limits
Content Fragmentaem-content-fragmentFor CF-driven blocks
Experience Fragmentaem-experience-fragmentFor reusable content+layout fragments
Content tagsaem-tagFor categorization via AEM tag picker

Field naming rules (semantic collapsing):

  • image + imageAlt → collapsed into <picture><img alt="...">
  • link + linkText + linkTitle + linkType → collapsed into <a href="..." title="...">text</a> with optional class
  • title + titleType → collapsed into <h2>title</h2> (level from titleType)
  • Fields prefixed with group_ (underscore separator) are grouped into a single cell
Step 4: Generate the Configuration

Generate entries for all three files. The approach depends on whether the project uses centralized or distributed config.

Check for distributed config pattern: If the block directory contains _<blockname>.json files (e.g., blocks/hero/_hero.json), create a distributed config file instead of editing the central files.

For Centralized Config (editing the three root JSON files):

component-definition.json — Add to the "Blocks" group's components array:

json
{
  "title": "<Block Display Name>",
  "id": "<block-id>",
  "plugins": {
    "xwalk": {
      "page": {
        "resourceType": "core/franklin/components/block/v1/block",
        "template": {
          "name": "<Block Name>",
          "model": "<model-id>"
        }
      }
    }
  }
}

For container blocks, add both the container AND item definitions. The container gets "filter" instead of "model", and the item uses "core/franklin/components/block/v1/block/item" as resourceType.

For key-value blocks, add "key-value": true to the template.

Template can include default values for any model field (e.g., "titleType": "h3", "classes": ["light"]).

component-models.json — Add a new model entry:

json
{
  "id": "<model-id>",
  "fields": [
    {
      "component": "<field-type>",
      "name": "<property-name>",
      "label": "<Display Label>",
      "valueType": "string"
    }
  ]
}

component-filters.json — Add the block ID to the section filter's components array. For container blocks, also add a new filter entry defining allowed children.

Show full SKILL.md (383 more words)Show less
For Distributed Config (creating blocks/<name>/_<name>.json):

Create a single file with all three configs:

json
{
  "definitions": [ ... ],
  "models": [ ... ],
  "filters": [ ... ]
}

Still add the block to the section filter in the central component-filters.json.

Step 5: Validate

After generating the config, verify:

  1. ID consistency: The id in the definition matches what's used in component-filters.json. The template.model value matches the id in component-models.json.
  2. Filter registration: The block's ID appears in the section filter's components array (otherwise authors can't add it to pages).
  3. Field names match block JS: The name properties in the model fields should produce HTML that the block's decorate() function can consume.
  4. Semantic collapsing: Paired fields use correct suffixes (e.g., image/imageAlt, not image/altText unless intentional).
  5. Valid JSON: All three files remain valid JSON after edits.
  6. No duplicate IDs: No model or filter ID conflicts with existing entries.

Reference Files

For detailed information, read these reference files as needed:

  • references/architecture.md — How the three files connect, the full AEM→Markdown→HTML pipeline, resource types, field naming conventions, semantic collapsing rules, and RTE filter configuration
  • references/field-types.md — Complete reference for all 17 field component types (text, textarea, richtext, reference, aem-content, aem-content-fragment, aem-experience-fragment, aem-tag, select, multiselect, checkbox-group, radio-group, boolean, number, date-time, container, tab), valueType constraints, required properties, field properties, validation types, conditional fields, and option formats
  • references/examples.md — Real examples showing Hero (simple), Embed (simple with URL), Cards (container), Teaser (variants), Product Details (key-value), Article (content fragment), Section configuration, Metadata (textarea), Feature Toggles (checkbox-group), and RTE filter configuration

Common Pitfalls

  • Forgetting to add to section filter: The block won't appear in the author's add menu unless it's in the section filter's components list.
  • Wrong resourceType: Almost all custom blocks use core/franklin/components/block/v1/block. Don't invent custom resource types.
  • Mismatched model/filter IDs: The template.model must exactly match the model id, and template.filter must exactly match the filter id.
  • Choosing the wrong text field type: Use text for single-line strings, textarea for multi-line plain text, and richtext for formatted content. For URLs and page links, use aem-content so authors get the content picker.
  • Wrong valueType: Most components enforce a specific valueType (e.g., boolean must use "boolean", number must use "number", checkbox-group must use "string[]"). Always include valueType and check the field-types reference for the enforced value.
  • Container without filter: Container blocks need a filter (not a model) in their template, and a corresponding filter entry in component-filters.json.

© adobe, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (references) in plugins/aem/edge-delivery-services/skills/ue-component-model of adobe/skills.

  • SKILL.md
  • package.json
  • references/architecture.md
  • references/examples.md
  • references/field-types.md

Open the folder on GitHubat commit 985c436

Compare with similar skills

Ue Component Model next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ue Component Model compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ue Component Model this skilladobe/skills196—~2.4kAutomated safety check: PassApache-2.0
Sanity Migrationsanity-io/agent-toolkit188—~1.4kAutomated safety check: PassMIT
Content Management Systemsgithub/awesome-copilot40k1 repos~1.3kAutomated safety check: PassMIT
App Builder UI ScaffolderNeverSight/learn-skills.dev2161 repos~2.2kAutomated safety check: PassApache-2.0
Authoring Analysismajiayu000/claude-skill-registry6662 repos~3.1kAutomated safety check: PassMIT
Block Inventorymajiayu000/claude-skill-registry6661 repos~2.1kAutomated safety check: PassMIT

Similar skills

  • Sanity Migration

    sanity-io/agent-toolkit

    Official

    Plans, implements, and reviews migrations from other CMSes and content systems into Sanity.

    188 GitHub stars~1.4k tokensUpdated 2 days ago
    Documents & OfficeAuto-check passed
  • Content Management Systems

    github/awesome-copilot

    Official

    Workflow for building and modifying content management systems across WordPress, Shopify, Wix, Squarespace, Drupal, WooCommerce, Joomla, HubSpot CMS Hub, Webflow, Adobe Experience Manager, and…

    40k GitHub starsUsed in 1 repo~1.3k tokens
    Sales & SupportAuto-check passed
  • App Builder UI Scaffolder

    NeverSight/learn-skills.dev

    Generates React Spectrum UI code for Adobe Experience Cloud Shell apps and AEM UI Extensions from annotated patterns.

    216 GitHub starsUsed in 1 repo~2.2k tokens
    Frontend & DesignAuto-check passed
  • Authoring Analysis

    majiayu000/claude-skill-registry

    Analyze content sequences and determine authoring approach (default content vs blocks).

    666 GitHub starsUsed in 2 repos~3.1k tokens
    Auto-check passed
  • Block Inventory

    majiayu000/claude-skill-registry

    Survey available blocks from local AEM Edge Delivery Services project and Block Collection to understand the block palette available for authoring.

    666 GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • Identify Page Structure

    majiayu000/claude-skill-registry

    Identify section boundaries and content sequences within a scraped webpage for AEM Edge Delivery Services import.

    666 GitHub starsUsed in 1 repo~1.5k tokens
    Auto-check passed

More from adobe/skills

All 65 skills in this repo
  • Scaffolds, implements, deploys and debugs Adobe Runtime actions in App Builder projects, with templates for webhooks, events, database CRUD, sequences and Asset Compute workers.

    196 GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Launches Chrome with an unpacked extension over CDP, opens its sidepanel, popup or options page, and hands over to cdp-connect for clicks, typing and screenshots.

    196 GitHub stars~952 tokensUpdated today
    Auto-check passed
  • Extracts icons, metadata, text, forms, videos and social links from any web page with playwright-cli, with SVG icon classification and cleanup.

    196 GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Page Langs

    adobe/skills

    Detect all languages used on a webpage — both declared (html@lang, hreflang alternate links, nested lang= attributes, meta content-language) and actually present in the body text (Google CLD3 via…

    196 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Page Prep

    adobe/skills

    Prepare any webpage for clean interaction by detecting and removing disruptive overlays (cookie banners, GDPR consent, modals, popups, newsletter signups, paywalls, login walls).

    196 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Page Reduce

    adobe/skills

    Reduce a webpage to a structural skeleton with semantic tokens.

    196 GitHub stars~1.9k tokensUpdated today
    Auto-check passed

Questions about Ue Component Model

What does Ue Component Model do?

Use this when the user mentions component models, component definitions, component filters, block configuration for the Universal Editor, UE block setup, adding a new block to UE, configuring block…. Ue Component Model is an agent skill from adobe/skills. Use this when the user mentions component models, component definitions, component filters, block configuration for the Universal Editor, UE block setup, adding a new block to UE, configuring block properties or block authoring fields, or wants to create an EDS/Franklin block with Universal Editor support, modify block fields, or add a block to the section filter.

When should I use Ue Component Model?

Ue Component Model fits situations like: mentions component models; component definitions; component filters; block configuration for the Universal Editor.

How do I install Ue Component Model in Claude Code?

Run `npx skills add adobe/skills --skill ue-component-model -a claude-code`. Or copy the skill folder (plugins/aem/edge-delivery-services/skills/ue-component-model in adobe/skills) into .claude/skills/ue-component-model in your project. Claude Code loads it when a task matches its description.

How do I install Ue Component Model in Codex?

Run `npx skills add adobe/skills --skill ue-component-model -a codex`. Or copy the skill folder (plugins/aem/edge-delivery-services/skills/ue-component-model in adobe/skills) into .agents/skills/ue-component-model in your project. Codex loads it when a task matches its description.

Can I use Ue Component Model in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add adobe/skills --skill ue-component-model -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ue-component-model, .gemini/skills/ue-component-model, .github/skills/ue-component-model and .opencode/skills/ue-component-model in your project.

What does Ue Component Model need to run?

SKILL.md names no scripts, command-line tools or credentials: Ue Component Model is instructions for the agent only.

Does Ue Component Model access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Ue Component Model safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Ue Component Model use?

Ue Component Model is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ue Component Model use?

About 2.4k tokens (SKILL.md is roughly 9.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 8.8k tokens, read only when the agent opens those files.

What are the alternatives to Ue Component Model?

Skills that share tags, products or a category with Ue Component Model: Sanity Migration (sanity-io/agent-toolkit, 188 stars), Content Management Systems (github/awesome-copilot, 40k stars), App Builder UI Scaffolder (NeverSight/learn-skills.dev, 216 stars) and Authoring Analysis (majiayu000/claude-skill-registry, 666 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ue Component Model?

adobe (a GitHub organization) maintains it in adobe/skills, which has 196 GitHub stars. The repository holds 65 skills in this directory. The repository was last updated on October 7, 2026.

Source: adobe/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.