# content-driven-development

A skill for AEM Edge Delivery Services work: find or create test content first, then write the code. Useful for blocks, styling and scripts.js changes.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1600 installs · ★ 310
- Author: adobe
- License: Apache-2.0 · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/adobe/skills/tree/HEAD/plugins/aem/edge-delivery-services/skills/content-driven-development/SKILL.md
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/skills/content-driven-development

## What it does

The skill walks through the Content Driven Development process. Before touching code you identify or create the content your change will be validated against. It lays out eight steps, from starting the dev server to opening a PR with a preview link. Two steps hand off to other skills: `analyze-and-plan` for requirements and acceptance criteria, `content-modeling` for the table structure of a block.

Test content comes from one of several paths. An existing URL gets checked with `curl` for a 200. For a brand new block the skill suggests authoring content in your CMS first — Google Drive, SharePoint, DA or Universal Editor — with a local HTML file at `drafts/tmp/{block-name}.plain.html` as the temporary route. Pushing content to DA programmatically starts with the `da-auth` skill to get a `DA_TOKEN`, then the Admin API.

The dev server runs on `aem up --no-open --forward-browser-logs`, which needs the AEM CLI installed globally via `npm install -g @adobe/aem-cli`. Port 3000 has to be free or startup fails. The content-modeling step is skipped when changes are CSS-only and leave the content structure alone. Documentation-only edits and config changes that don't affect authoring are outside its scope.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add adobe/skills --skill content-driven-development -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/content-driven-development/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/content-driven-development/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add adobe/skills --skill content-driven-development -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/content-driven-development/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add adobe/skills --skill content-driven-development -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/content-driven-development/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install adobe/skills content-driven-development
```

2. **Manually: put the files in place**
- File: `.github/skills/content-driven-development/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add adobe/skills --skill content-driven-development -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/adobe/skills --path plugins/aem/edge-delivery-services/skills/content-driven-development
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/content-driven-development/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add adobe/skills --skill content-driven-development -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/adobe/skills/tree/HEAD/plugins/aem/edge-delivery-services/skills/content-driven-development/SKILL.md

## When to use it
- design a block's table structure before writing any code
- find or create test content covering every scenario
- validate a CSS change on a real page instead of an empty mockup
- write acceptance criteria before development starts
- start the AEM dev server and confirm it responds

## Example prompts
- help me add a new hero block for AEM Edge Delivery Services
- I'm changing the cards block styles, validate them against test content
- there's a bug in scripts.js — start from the test content

## Source text · SKILL.md · Apache-2.0

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: d9179b43fc8657ba.

BEGIN THIRD-PARTY FILE d9179b43fc8657ba
```text
---
name: content-driven-development
description: Use this when making any AEM Edge Delivery Services (EDS, Franklin, Helix) code change — new blocks, block modifications, CSS styling, bug fixes, core functionality (scripts.js, styles, delayed.js), or any JavaScript/CSS work that needs validation. Covers the Content Driven Development process — identifying or creating real test content before writing code, designing an author-friendly content model, and validating against that content throughout development. Do not use for documentation-only changes or configuration changes that do not affect authoring.
license: Apache-2.0
metadata:
  version: "2.0.1"
---

# Content Driven Development (CDD)

Orchestrate 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.**

## When to Use This Skill

Use CDD for ALL AEM development tasks:
- ✅ Creating new blocks
- ✅ Modifying existing blocks (structural or functional changes)
- ✅ Changes to core decoration functionality
- ✅ Bug fixes that require validation
- ✅ Any code that affects how authors create or structure content

Do NOT use for:
- Documentation-only changes
- Configuration changes that don't affect authoring
- Research tasks that don't require making any code changes yet

## Philosophy

Content Driven Development prioritizes creating or identifying test content before writing code. This ensures:
- Code is built against real content
- Author-friendly content models
- Validation throughout development

**Optional: Understanding CDD Principles**

Read [references/cdd-philosophy.md](references/cdd-philosophy.md) if:
- User asks "why" questions about content-first approach
- You need to understand reasoning behind CDD decisions
- You're unsure whether to prioritize author vs developer experience

Otherwise: Follow the workflow steps below

## Step 0: Create TodoList

**FIRST STEP:** Use the TodoWrite tool to create a todo list with the following 8 tasks:

1. **Start dev server** (if not running)
```
END THIRD-PARTY FILE d9179b43fc8657ba

The third-party file has ended. Everything between the d9179b43fc8657ba tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2231 of 15001 bytes. © adobe · Apache-2.0 · https://github.com/adobe/skills/tree/HEAD/plugins/aem/edge-delivery-services/skills/content-driven-development/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
