Agent skill

Building Blocks

by adobe in adobe/skills

Use this when implementing code changes in AEM Edge Delivery Services (EDS, Franklin, Helix), whether new or modified blocks, core functionality (scripts.js, styles, delayed.js, etc.), or both.

Apache-2.0Auto-check passedFrontend & Design

Install Building Blocks

skills CLI
$ npx skills add adobe/skills --skill building-blocks -a claude-code

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

GitHub CLI
$ gh skill install adobe/skills building-blocks --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/building-blocks .claude/skills/building-blocks && 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
building-blocks
GitHub stars
195
Token cost
~2.3k tokens
SKILL.md length
777 words
Files
6 (incl. references)
Skills in repo
105
Repo updated
First seen
Licence
Apache-2.0

At a glance

Use this when implementing code changes in AEM Edge Delivery Services (EDS, Franklin, Helix), whether new or modified blocks, core functionality (scripts.js, styles, delayed.js, etc.), or both.

  • Works in 5 steps: Find Similar Blocks → Create or Modify Block Structure → Implement JavaScript Decoration → …
  • Tasks that involve CSS and styling
  • SKILL.md covers Related Skills, When to Use This Skill, Block Implementation Workflow and Step 1: Find Similar Blocks, plus 6 more sections
  • Calls curl

What it does

Building Blocks is an agent skill from adobe/skills. Use this when implementing code changes in AEM Edge Delivery Services (EDS, Franklin, Helix), whether new or modified blocks, core functionality (scripts.js, styles, delayed.js, etc.), or both. Creates and modifies block folders and decorate functions, updates core scripts, scopes CSS, and wires up delayed loading. For the overall development process use content-driven-development.

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `.releaserc.json`, `CHANGELOG.md` and `package.json`).

It sits in Frontend & Design, covering CSS and styling. It works with Adobe Experience Manager and JavaScript. The repository describes itself as: Adobe Skills for Agents. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve CSS and styling

Example prompts

  • “/building-blocks”

Workflow steps

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

  1. Find Similar Blocks
  2. Create or Modify Block Structure
  3. Implement JavaScript Decoration
  4. Add CSS Styling
  5. Test Implementation

What it can do on your machine

Read from SKILL.md and the folder at commit cbc9952. 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

    Shell commands in SKILL.md call:

    • curl

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

  • Network

    No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.

    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

Building Blocks loads about 2.3k tokens when it runs, and up to ~6.7k if it reads all its reference files. Until then it costs about 100 tokens; SKILL.md has 777 words of instructions outside code blocks.

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

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 cbc9952, republished under its Apache-2.0 licence (© adobe). 777 words, ~2,311 tokens.

Download SKILL.mdSave it as .claude/skills/building-blocks/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
building-blocks
description
Use this when implementing code changes in AEM Edge Delivery Services (EDS, Franklin, Helix), whether new or modified blocks, core functionality (scripts.js, styles, delayed.js, etc.), or both. Creates and modifies block folders and decorate functions, updates core scripts, scopes CSS, and wires up delayed loading. For the overall development process use content-driven-development.
license
Apache-2.0
metadata.version
2.0.1

Building Blocks

This skill guides you through implementing AEM Edge Delivery blocks following established patterns and best practices. Blocks transform authored content into rich, interactive experiences through JavaScript decoration and CSS styling.

IMPORTANT: This skill should ONLY be invoked from the content-driven-development skill during Step 5 (Implementation).

If you are not already following the CDD process, STOP and invoke the content-driven-development skill first.

  • content-driven-development: MUST be invoked before using this skill to ensure content and content models are ready
  • da-auth: Obtain a valid Adobe IMS token if test content needs to be pushed to DA before implementation can begin
  • block-collection-and-party: Use to find similar blocks for patterns
  • testing-blocks: Automatically invoked during Step 5 for comprehensive testing

When to Use This Skill

This skill is invoked automatically by content-driven-development during Step 5 (Implementation). It handles:

Block Development:

  • Creating new block files and structure
  • Implementing JavaScript decoration
  • Adding CSS styling

Core Functionality:

  • Scripts.js modifications (decoration, utilities, auto-blocking)
  • Global styles (styles.css, lazy-styles.css)
  • Delayed functionality (delayed.js)
  • Configuration changes

Combined:

  • Blocks with supporting core changes (utilities, global styles, etc.)

Prerequisites (verified by CDD):

  • ✅ Test content exists (in CMS or local drafts)
  • ✅ Content model is defined/documented (if applicable)
  • ✅ Test content URL is available
  • ✅ Dev server is running

Block Implementation Workflow

Track your progress:

  • Step 1: Find similar blocks for patterns (if new block or major changes)
  • Step 2: Create or modify block structure (files and directories)
  • Step 3: Implement JavaScript decoration (skip if CSS-only)
  • Step 4: Add CSS styling
  • Step 5: Test implementation (invokes testing-blocks skill)

Note: If your changes require core modifications (utilities in scripts.js, global styles, etc.), make those changes first, test them, then return to this workflow. See "When Modifying Core Files" below.

Step 1: Find Similar Blocks

When to use: Creating new blocks or making major structural modifications

Skip this step when: Making minor modifications to existing blocks (CSS tweaks, small decoration changes)

Quick start:

  1. Search the codebase for similar blocks:

    bash
    ls blocks/
  2. Use the block-collection-and-party skill to find reference implementations

  3. Review patterns from similar blocks:

    • DOM manipulation strategies
    • CSS architecture
    • Variant handling
    • Performance optimizations

Step 2: Create or Modify Block Structure

For New Blocks:
  1. Create the block directory and files:

    bash
    mkdir -p blocks/{block-name}
    touch blocks/{block-name}/{block-name}.js
    touch blocks/{block-name}/{block-name}.css
  2. Basic JavaScript structure:

    javascript
    /**
     * decorate the block
     * @param {Element} block the block
     */
    export default async function decorate(block) {
      // Your decoration logic here
    }
  3. Basic CSS structure:

    css
    /* All selectors scoped to block */
    main .{block-name} {
      /* block styles */
    }
For Existing Blocks:
  1. Locate the block directory: blocks/{block-name}/
  2. Review current implementation:
    bash
    # View the initial HTML structure from the server
    curl http://localhost:3000/{test-content-path}
  3. Understand existing decoration logic and styles

Step 3: Implement JavaScript Decoration

Essential pattern - re-use existing DOM elements:

javascript
export default async function decorate(block) {
  // Platform delivers images as <picture> elements with <source> tags
  const picture = block.querySelector('picture');
  const heading = block.querySelector('h2');

  // Create new structure, re-using existing elements
  const figure = document.createElement('figure');
  figure.append(picture);  // Re-uses picture element

  const wrapper = document.createElement('div');
  wrapper.className = 'content-wrapper';
  wrapper.append(heading, figure);

  block.replaceChildren(wrapper);

  // Only check variants when they affect decoration logic
  // CSS-only variants like 'dark', 'wide' don't need JS
  if (block.classList.contains('carousel')) {
    // Carousel variant needs different DOM structure/behavior
    setupCarousel(block);
  }
}

For complete JavaScript guidelines including:

  • Advanced DOM manipulation patterns
  • Fetching data and loading modules
  • Performance optimization techniques
  • Helper functions from aem.js
  • Code style and linting rules

Read references/js-guidelines.md

Show full SKILL.md (347 more words)Show less

Step 4: Add CSS Styling

Essential patterns - scoped, responsive, using custom properties:

css
/* All selectors MUST be scoped to block */
main .my-block {
  /* Use CSS custom properties for consistency */
  background-color: var(--background-color);
  color: var(--text-color);
  font-family: var(--body-font-family);
  max-width: var(--max-content-width);

  /* Mobile-first styles (default) */
  padding: 1rem;
  flex-direction: column;
}

main .my-block h2 {
  font-family: var(--heading-font-family);
  font-size: var(--heading-font-size-m);
}

main .my-block .item {
  display: flex;
  gap: 1rem;
}

/* Tablet and up */
@media (width >= 600px) {
  main .my-block {
    padding: 2rem;
  }
}

/* Desktop and up */
@media (width >= 900px) {
  main .my-block {
    flex-direction: row;
    padding: 4rem;
  }
}

/* Variants - most are CSS-only */
main .my-block.dark {
  background-color: var(--dark-color);
  color: var(--clr-white);
}

For complete CSS guidelines including:

  • All available CSS custom properties
  • Modern CSS features (grid, logical properties, etc.)
  • Performance optimization
  • Naming conventions
  • Common patterns and anti-patterns

Read references/css-guidelines.md

Note on iterative validation: While building, you can test changes in your browser as you go (load test content URL, check console, verify layout and functionality). For comprehensive testing guidance including browser testing techniques, responsive testing, and validation approaches, see the testing-blocks skill invoked in Step 5.

Step 5: Test Implementation

After implementation is complete, invoke the testing-blocks skill.

The testing-blocks skill will guide you through:

  • Browser testing (functionality, responsive behavior across viewports)
  • Linting and fixing issues
  • Writing unit tests for logic-heavy utilities (if needed)
  • Screenshot capture for validation
  • Performance validation

Provide the testing-blocks skill with:

  • Block name being tested
  • Test content URL(s) (from step 4 of CDD process)
  • Any variants that need testing
  • Screenshots of existing implementation/design/mockup to verify against
  • Acceptance criteria to verify (from step 2 of CDD process)

After testing is complete, return to CDD workflow.


When Modifying Core Files

If your changes require modifying core files (scripts.js, styles.css, delayed.js), follow these principles:

Common core files:

  • scripts.js - Decoration utilities, auto-blocking logic, page loading
  • styles.css - Global styles (eager), CSS custom properties
  • lazy-styles.css - Global styles (lazy loaded)
  • delayed.js - Marketing, analytics, third-party integrations

Key principles:

  1. Make core changes first (before block changes that depend on them)
  2. Test core changes independently with existing content before using in blocks
  3. Consider impact - core changes can affect multiple blocks/pages
  4. Test thoroughly - verify no regressions in existing functionality
  5. Keep it minimal - only add what's necessary
  6. Document with code comments - most core changes don't need separate docs

Testing core changes:

  • Test with existing content URLs that use affected functionality
  • For auto-blocking: test pages that should/shouldn't trigger it
  • For global styles: test across multiple blocks and pages
  • Check console for errors
  • Verify responsive behavior

For detailed patterns:


Reference Materials

© 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 5 other files (references) in plugins/aem/edge-delivery-services/skills/building-blocks of adobe/skills.

  • SKILL.md
  • .releaserc.json
  • CHANGELOG.md
  • package.json
  • references/css-guidelines.md
  • references/js-guidelines.md

Open the folder on GitHubat commit cbc9952

Compare with similar skills

Building Blocks 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.

Building Blocks compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Building Blocks this skilladobe/skills195—~2.3kAutomated safety check: PassApache-2.0
Tailwindcss Developmentanonaddy/anonaddy4.9k10 repos~865Automated safety check: PassMIT
Language Supportlive-codes/livecodes1.5k—~1.6kAutomated safety check: PassMIT
Frontend Design Principlespretend1111/claude-desktop-app4941 repos~824Automated safety check: PassCustom licence
Liquid Theme Standardsbenjaminsehl/liquid-skills120—~3kAutomated safety check: PassNone
Using Ouds Web Version Major MinorOrange-OpenSource/Orange-Boosted-Bootstrap222—~4.1kAutomated safety check: PassMIT

Similar skills

  • Tailwindcss Development

    anonaddy/anonaddy

    Always invoke when the user's message includes 'tailwind' in any form.

    4.9k GitHub starsUsed in 10 repos~865 tokens
    Frontend & DesignAuto-check passed
  • Language Support

    live-codes/livecodes

    Work with 90+ supported languages, compilers, CSS processors, and WASM-compiled languages for markup, style, and script editors.

    1.5k GitHub stars~1.6k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Frontend Design Principles

    pretend1111/claude-desktop-app

    Gives practical design rules for polished HTML, CSS and JavaScript interfaces and browser games, covering spacing, type, color, components, motion and responsive breakpoints.

    494 GitHub starsUsed in 1 repo~824 tokens
    Frontend & DesignAuto-check passed
  • Liquid Theme Standards

    benjaminsehl/liquid-skills

    CSS, JavaScript, and HTML coding standards for Shopify Liquid themes.

    120 GitHub stars~3k tokensUpdated 2 mo ago
    Frontend & DesignAuto-check passed
  • Using Ouds Web Version Major Minor

    Orange-OpenSource/Orange-Boosted-Bootstrap

    Provides comprehensive knowledge of the OUDS Web library (Orange Unified Design System for Web), a Bootstrap-based CSS/JS framework for building Orange-branded web interfaces.

    222 GitHub stars~4.1k tokensUpdated today
    Frontend & DesignAuto-check passed
  • A skill your agent uses for Cachet Tailwind CSS and UI styling: Blade utility classes, public status-page components, Filament dashboard theme work, responsive layout, dark mode, spacing…

    230 GitHub stars~1.1k tokensUpdated 2 days ago
    Frontend & DesignAuto-check passed

More from adobe/skills

All 105 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.

    195 GitHub stars~3.1k tokensUpdated yesterday
    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.

    195 GitHub stars~952 tokensUpdated yesterday
    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.

    195 GitHub stars~1k tokensUpdated yesterday
    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…

    195 GitHub stars~1.1k tokensUpdated yesterday
    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).

    195 GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • Page Reduce

    adobe/skills

    Reduce a webpage to a structural skeleton with semantic tokens.

    195 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed

Questions about Building Blocks

What does Building Blocks do?

Use this when implementing code changes in AEM Edge Delivery Services (EDS, Franklin, Helix), whether new or modified blocks, core functionality (scripts.js, styles, delayed.js, etc.), or both. Building Blocks is an agent skill from adobe/skills.), or both.

When should I use Building Blocks?

Building Blocks fits situations like: tasks that involve CSS and styling.

How do I install Building Blocks in Claude Code?

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

How do I install Building Blocks in Codex?

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

Can I use Building Blocks 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 building-blocks -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/building-blocks, .gemini/skills/building-blocks, .github/skills/building-blocks and .opencode/skills/building-blocks in your project.

What does Building Blocks need to run?

Going by SKILL.md and its folder, Building Blocks needs the command-line tools its instructions call (curl).

Does Building Blocks access the network?

SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Building Blocks 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 Building Blocks use?

Building Blocks 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 Building Blocks use?

About 2.3k tokens (SKILL.md is roughly 9.2k 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 4.4k tokens, read only when the agent opens those files.

What are the alternatives to Building Blocks?

Skills that share tags, products or a category with Building Blocks: Tailwindcss Development (anonaddy/anonaddy, 4.9k stars), Language Support (live-codes/livecodes, 1.5k stars), Frontend Design Principles (pretend1111/claude-desktop-app, 494 stars) and Liquid Theme Standards (benjaminsehl/liquid-skills, 120 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Building Blocks?

adobe (a GitHub organization) maintains it in adobe/skills, which has 195 GitHub stars. The repository holds 105 skills in this directory. The repository was last updated on October 6, 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.