From aem-edge-delivery-services
Orchestrates content-first development workflow for AEM Edge Delivery Services. Ensures test content exists before implementing JS/CSS/block changes, bug fixes, or core functionality.
npx claudepluginhub adobe/skillsThis skill uses the workspace's default tool permissions.
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.
Guides block implementation and core changes in AEM Edge Delivery Services via JS decoration, CSS styling, and file modifications following content-driven workflow.
Generates developer guide for AEM Edge Delivery Services projects by analyzing codebase structure, custom implementations, and design tokens. Use for onboarding or technical handovers.
Bootstraps new projects from scratch: gathers identity (name, GitHub org, Cloudflare ID), detects type, sets up design system, staging/prod envs, i18n, SEO, AGENTS.md, tests, 8-gate deploy pipeline, workflows.
Share bugs, ideas, or general feedback.
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:3000
Expected: 200 (server running) or connection error (server not running)
If not running, start it:
aem up --no-open --forward-browser-logs
Notes:
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:3000
Expected: 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 lint
If lint errors:
npm run lint:fix for auto-fixable problems)Run existing tests:
npm test
Note: 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-name
Stage 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 HEAD
Create 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 files