Skills for building AEM Edge Delivery Services sites — block development, content modeling, code review, testing, and page import.
82
76%
Does it follow best practices?
Impact
88%
1.04xAverage score across 6 eval scenarios
Advisory
Suggest reviewing before use
You are an orchestrator of the Content Driven Development workflow for AEM Edge Delivery Services. This workflow ensures code is built against real content with author-friendly content models.
CRITICAL: Never start writing or modifying code without first identifying or creating the content you will use to test your changes.
Use CDD for ALL AEM development tasks:
Do NOT use for:
Content Driven Development prioritizes creating or identifying test content before writing code. This ensures:
Optional: Understanding CDD Principles
Read resources/cdd-philosophy.md if:
Otherwise: Follow the workflow steps below
FIRST STEP: Use the TodoWrite tool to create a todo list with the following 8 tasks:
Start dev server (if not running)
Analyze & plan
Design content model
Identify/create test content
Implement
Lint & test
Final validation
Ship it
Mark todo complete when: Todo list created with all 8 tasks
Check if dev server is running:
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000Expected: 200 (server running) or connection error (server not running)
If not running, start it:
aem up --no-open --forward-browser-logsNotes:
npm install -g @adobe/aem-clinpx -y @adobe/aem-cli up --no-open --forward-browser-logsIMPORTANT: Check the command output for errors. Common issues:
After starting, verify it's running:
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000Expected: 200
Success criteria:
Mark todo complete when: Dev server confirmed running and accessible
Invoke: analyze-and-plan skill
Provide:
The analyze-and-plan skill will:
Success criteria:
Mark todo complete when: Analysis documented and acceptance criteria defined
Skip if: CSS-only changes that don't affect content structure
Invoke: content-modeling skill
Provide:
The content-modeling skill will:
Success criteria:
Mark todo complete when: Content model designed and documented
Goal: End this step with accessible test content URL(s) covering all test scenarios
Choose the best ath based on your situation:
When to use: User already has content and provided URL(s)
What to do:
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/path200 statusWhen to use: Building a brand new block that doesn't exist yet
What to do:
Approach 1: CMS Content (Recommended)
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/path200 statusApproach 2: Local HTML (Temporary)
drafts/tmp/{block-name}.plain.htmlresources/html-structure.md for local HTML file format guidanceaem up --html-folder drafts --no-open --forward-browser-logscurl -s -o /dev/null -w "%{http_code}" http://localhost:3000/drafts/tmp/{block-name}200 statusWhen to use: Modifying, fixing, or styling an existing block
What to do:
First: Search for existing content
What find-test-content will do:
Then: Assess search results
If sufficient content found:
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/path200 statusIf no content found OR insufficient coverage:
Success criteria:
Mark todo complete when: Test content identified/created and validated
Invoke: building-blocks skill
Provide:
The building-blocks skill will:
Success criteria:
Mark todo complete when: building-blocks skill reports implementation complete and working across viewports
What to do:
npm run lintIf lint errors:
npm run lint:fix for auto-fixable problems)Run existing tests:
npm testNote: Unit tests are optional and only needed for logic-heavy utilities. The testing-blocks skill (invoked by building-blocks in Step 5) handles browser testing. This step catches any remaining lint issues and runs the project's test suite.
Success criteria:
npm run lint passes with no errorsnpm test passes (if tests exist)Mark todo complete when: All lint and test checks pass
What to do:
Review acceptance criteria from Step 2
Final browser sanity check
Verify no regressions
Success criteria:
Mark todo complete when: All acceptance criteria verified and no regressions found
What to do:
Create feature branch (if not already on one):
git checkout -b block-nameStage specific files only:
git add blocks/{block-name}/{block-name}.js blocks/{block-name}/{block-name}.css
# Add only files you worked on - NEVER use `git add .`Commit with conventional commit format:
git commit -m "feat(block-name): add new block"Include revelevant details in commit message and agent attribution in footer (agent adds Co-authored-by: cursor <noreply@cursor.com>)
Push to feature branch:
git push origin HEADCreate PR with preview link:
https://{branch}--{repo}--{owner}.aem.page/{path}https://carousel--aem-skills-demo--shsteimer.aem.page/Determining if you need a draft PR:
Create a draft PR when:
Create a regular PR when:
Workflow for draft PRs:
gh pr create --drafthttp://localhost:3000/drafts/tmp/[test-file]PR Description Template:
Use this template for all PRs, including all relevant preview links and adapting as needed:
## Description
Brief description of changes
[If an issue exists]
Fix #<gh-issue-id>
Test URLs:
[Repeat for all relevant test urls]
- Before: https://main--{repo}--{owner}.aem.page/{path}
- After: https://{branch}--{repo}--{owner}.aem.page/{path}
[If only local test content (draft PR):]
This PR is currently a **draft** pending creation of CMS test content.
### Next Steps to Complete PR:
[add relevant steps here]Success criteria:
Mark todo complete when: PR created and ready for review
Common mistakes that violate CDD principles:
resources/cdd-philosophy.md - Why content-first mattersresources/html-structure.md - Guide for creating local HTML test filesevals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
skills
analyze-and-plan
block-collection-and-party
block-inventory
building-blocks
code-review
content-driven-development
content-modeling
docs-search
find-test-content
generate-import-html
identify-page-structure
page-decomposition
page-import
preview-import
scrape-webpage
testing-blocks