aa-conversion-funnel-a…
Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have…
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,
$ npx -y skills add adobe/skills --skill building-blocks --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/building-blocksContext preview
The summary Claude sees to decide when to auto-load this skill.
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,
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"
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.
This skill is invoked automatically by **content-driven-development** during Step 5 (Implementation). It handles:
**Block Development:**
**Core Functionality:**
**Combined:**
Prerequisites (verified by CDD):
Track your progress:
**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.
**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:
ls blocks/
2. Use the **block-collection-and-party** skill to find reference implementations
3. Review patterns from similar blocks:
1. Create the block directory and files:
mkdir -p blocks/{block-name}
touch blocks/{block-name}/{block-name}.js
touch blocks/{block-name}/{block-name}.css2. Basic JavaScript structure:
/**
* decorate the block
* @param {Element} block the block
*/
export default async function decorate(block) {
// Your decoration logic here
}3. Basic CSS structure:
/* All selectors scoped to block */
main .{block-name} {
/* block styles */
}1. Locate the block directory: `blocks/{block-name}/` 2. Review current implementation:
# View the initial HTML structure from the server
curl http://localhost:3000/{test-content-path}3. Understand existing decoration logic and styles
**Essential pattern - re-use existing DOM elements:**
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:**
**Read [references/js-guidelines.md](references/js-guidelines.md)**
**Essential patterns - scoped, responsive, using custom properties:**
/* 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 */
@mRepo: adobe/skills
Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have…
Generates a concise, executive-ready performance summary covering key metrics, trends, and…
Produces a compact KPI digest showing how key metrics changed over a period and what's…
Compares the performance of two or more audience segments across key metrics side by side.…
Identifies which items (pages, campaigns, products, channels, regions) had the biggest…
Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user…