Apply a Content Driven Development process to AEM Edge Delivery Services development. Use for ALL code changes - new blocks, block modifications, CSS styling, bug fixes, core functionality (scripts.js, styles, etc.), or any JavaScript/CSS work that needs validation.
72
87%
Does it follow best practices?
Impact
—
No eval scenarios have been run
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 references/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 path 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 statusUsing DA: If you need to push HTML content programmatically to DA (rather than asking the user to author it), invoke the da-auth skill first to obtain a valid
DA_TOKEN, then use the DA Admin API (POST https://admin.da.live/source/{org}/{repo}/{path}) to push the content and trigger a preview.
Approach 2: Local HTML (Temporary)
drafts/tmp/{block-name}.plain.htmlaem 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 relevant 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:
706f94d
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.