page-decomposition — скилл для Claude Code: разбор секций страницы
Вспомогательный скилл для пайплайна импорта страниц: разбирает одну секцию на смысловые последовательности и описывает их нейтрально, без имён блоков.
npx skills add adobe/skills --skill page-decomposition -a claude-codeЧто делает page-decomposition
Скилл работает внутри пайплайна импорта страниц для AEM Edge Delivery Services. Он берёт одну секцию и разбивает её содержимое на последовательности: где заканчивается проза и начинается сетка, где меняется повторяющийся паттерн. Каждую последовательность он описывает словами — «две картинки рядом», «сетка из 8 элементов с иконками» — и намеренно не называет блоки. Решение о том, во что это превратится при авторинге, принимается позже.
На вход скилл получает границы секции, скриншот и очищенный HTML. На выходе — структура с номером секции и списком последовательностей, у каждой свой номер и текстовое описание. Промежуточные точки разрыва он тоже фиксирует: смена типа контента, переход от текста к структуре, смена одного паттерна на другой.
Вызывать его вручную не нужно. Это шаг 2b внутри identify-page-structure, который сам обходит секции по одной; напрямую скилл не запускают. Если вы ждёте от него готовой разметки блоков, вы обратились не туда — здесь только описание того, что видно.
Какие задачи решает
- разбить секцию на смысловые последовательности перед авторингом
- найти точки разрыва между прозой и структурированными паттернами
- описать содержимое секции нейтрально, не привязываясь к именам блоков
- подготовить основу для решений о блоках на следующем шаге
- разобрать одну секцию отдельно от остальной страницы
Примеры запросов агенту
- разбери секцию 2 на последовательности и опиши их нейтрально
- где в этой секции заканчивается текст и начинается сетка?
- вызови page-decomposition для секции 3 с этим скриншотом и HTML
Как установить page-decomposition
1Через Skills CLI (Vercel)
npx skills add adobe/skills --skill page-decomposition -a claude-code2Вручную: положить файлы
~/.claude/skills/page-decomposition/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/page-decomposition/
1Через Skills CLI (Vercel)
npx skills add adobe/skills --skill page-decomposition -a codex2Вручную: положить файлы
.agents/skills/page-decomposition/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add adobe/skills --skill page-decomposition -a cursor2Вручную: положить файлы
.cursor/skills/page-decomposition/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install adobe/skills page-decomposition2Вручную: положить файлы
.github/skills/page-decomposition/SKILL.md1Через Skills CLI (Vercel)
npx skills add adobe/skills --skill page-decomposition -a gemini-cli2Командой платформы
gemini skills install https://github.com/adobe/skills --path plugins/aem/edge-delivery-services/skills/page-decompositionВручную: положить файлы
.devin/skills/page-decomposition/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add adobe/skills --skill page-decomposition -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о page-decomposition
Как установить page-decomposition в Claude?
Через установщик скиллов: npx skills add adobe/skills --skill page-decomposition -a claude-code. После этого файл скилла лежит в ~/.claude/skills/page-decomposition/SKILL.md.
Что делает page-decomposition?
Анализирует одну секцию страницы и раскладывает её содержимое на последовательности, описывая каждую нейтрально — без имён блоков. Заодно отмечает точки разрыва между последовательностями.
Можно вызвать page-decomposition напрямую?
Нет. Скилл рассчитан на вызов из identify-page-structure для каждой секции по отдельности, сам по себе он не запускается.
Исходный текст
SKILL.md · Apache-2.0
---
name: page-decomposition
description: "Use this when the page-import pipeline needs to analyze the content sequences within a single section and describe them neutrally for AEM Edge Delivery Services. Covers identifying breaking points between default content and blocks, one section at a time. Do not invoke directly — called by page-import per section."
license: Apache-2.0
metadata:
version: "1.0.0"
---
# Page Decomposition
Analyze content sequences within a section and provide neutral descriptions without assigning block names.
## When to Use This Skill
This skill is called by **identify-page-structure** for EACH section to:
- Identify content sequences within that section
- Provide neutral descriptions (NO block names yet)
- Identify breaking points between sequences
- Enable authoring-focused decisions later
**IMPORTANT:** This skill analyzes ONE section at a time, not the whole page.
## Input Required
From the calling skill (identify-page-structure), you need:
- Section visual description and boundaries
- Screenshot showing the section
- Cleaned HTML content for the section
## Related Skills
- **page-import** - Top-level orchestrator
- **identify-page-structure** - Invokes this skill for each section (Step 2b)
- **block-inventory** - Provides available blocks AFTER decomposition
- **content-modeling** - Makes authoring decisions AFTER decomposition
- **content-driven-development** - References section structure in html-structure.md
## Key Concepts
**Content Hierarchy:**
```
DOCUMENT
├── SECTION (top-level, analyzed by identify-page-structure Step 2a)
│ ├── Content Sequence 1 ← THIS SKILL IDENTIFIES THESE
│ ├── Content Sequence 2 ← THIS SKILL IDENTIFIES THESE
│ └── ...
└── SECTION
└── Content Sequence 1
```
**What is a "content sequence"?**
A vertical flow of related content that will eventually become:
- Default content (headings, paragraphs, lists, inline images), OR
- A block (structured, repeating, or interactive component)
**Breaking points between sequences:**
- Visual/semantic shift in content type
- Change from prose → structured pattern
- Change from one pattern → different pattern
**Philosophy:**
- Describe WHAT you see, not WHAT it should be
- "Two images side-by-side" not "Columns block"
- "Grid of 8 items with icons" not "Cards block"
- Stay neutral - authoring decisions come later
## Decomposition Workflow
**Context:** identify-page-structure has already identified section boundaries (Step 2a). This skill is invoked FOR ONE SECTION to analyze its internal content sequences.
---
### Step 1: Examine the Section
Look at the screenshot and HTML for THIS section only.
**What to observe:**
- Vertical flow of content from top to bottom
- Where content changes type or pattern
- Visual groupings or breaks
**Ignore:**
- Other sections (out of scope)
- Section styling (already identified by page-import)
- Block names (stay neutral)
**Output:** Mental model of content flow within this section
---
### Step 2: Identify Breaking Points
Find where content shifts from one type/pattern to another.
**Breaking point indicators:**
- Prose text → Structured grid
- Heading/paragraph → Side-by-side images
- One repeating pattern → Different repeating pattern
- Structured content → Prose text
**Example within a section:**
```
Content flows top to bottom:
- Large heading
- Paragraph
- Two buttons
[BREAK] ← Visual/semantic shift
- Two images displayed side-by-side
```
**Output:** List of breaking points
---
### Step 3: Define Content Sequences
Between each breaking point is a content sequence.
**For each sequence, describe:**
- What elements it contains (heading, paragraph, images, etc.)
- How they're arranged (stacked, side-by-side, in a grid)
- Quantity (one heading, two images, grid of 8 items)
**Use neutral language:**
- ✅ "Two images displayed side-by-side"
- ❌ "Columns block with two images"
- ✅ "Grid of 8 items, each with icon and short text"
- ❌ "Cards block"
- ✅ "Large centered heading, paragraph, two buttons stacked vertically"
- ❌ "Hero block"
**Output:** Neutral descriptions for each sequence
---
### Step 4: Return Structured Output
Provide content sequences for this section in structured format.
**Output format:**
```javascript
{
sectionNumber: 1, // From identify-page-structure
sequences: [
{
sequenceNumber: 1,
description: "Large centered heading, paragraph, two buttons stacked vertically"
},
{
sequenceNumber: 2,
description: "Two images displayed side-by-side"
}
]
}
```
**This enables:**
- Clear understanding of section's internal structure
- Neutral foundation for authoring decisions
- Separation of description from implementation
---
## Section Metadata Format
**Table format:**
```markdown
+------------------------------+
| Section Metadata |
+------------------+-----------+
| style | light |
+------------------+-----------+
```
**Placement:** At the start of each section, before content
**Usage:** Applied by generate-import-html skill when generating final HTML
---
## Examples
### Example 1: Hero Section
**Input:** "Section 1 (light background): Large prominent content at top of page"
**Visual observation:**
- Large centered heading
- Paragraph text below it
- Two call-to-action buttons
[BREAK - visual shift]
- Two large images displayed next to each other
**Output:**
```javascript
{
sectionNumber: 1,
sequences: [
{
sequenceNumber: 1,
description: "Large centered heading, paragraph, two call-to-action buttons stacked vertically"
},
{
sequenceNumber: 2,
description: "Two large images displayed side-by-side"
}
]
}
```
---
### Example 2: Features Section
**Input:** "Section 2 (light background): Grid of feature items"
**Visual observation:**
- Centered heading
[BREAK - shift to structured pattern]
- Grid of 8 items
- Each item has: small icon, short text description
[BREAK - shift back to simple elements]
- Two centered buttons
**Output:**
```javascript
{
sectionNumber: 2,
sequences: [
{
sequenceNumber: 1,
description: "Single centered heading"
},
{
sequenceNumber: 2,
description: "Grid of 8 items, each with small icon and short text description"
},
{
sequenceNumber: 3,
description: "Two centered buttons"
}
]
}
```
---
### Example 3: Article Cards Section
**Input:** "Section 3 (grey background): Blog articles"
**Visual observation:**
- Eyebrow text "Latest Articles"
- Large heading
- Paragraph description
- Browse button
[BREAK - shift to repeating pattern]
- 4 items in grid
- Each item: image, category tag, heading, short description, read link
**Output:**
```javascript
{
sectionNumber: 3,
sequences: [
{
sequenceNumber: 1,
description: "Eyebrow text, large heading, paragraph description, browse button - all stacked vertically"
},
{
sequenceNumber: 2,
description: "Grid of 4 items, each with image, category tag, heading, description, and read link"
}
]
}
```
---
### Example 4: Simple Content Section
**Input:** "Section 4 (light background): Body content"
**Visual observation:**
- Multiple paragraphs of text
- Some inline images within the text
- Headings interspersed (H2, H3)
- No clear breaking points - content flows naturally
**Output:**
```javascript
{
sectionNumber: 4,
sequences: [
{
sequenceNumber: 1,
description: "Flowing prose content: multiple paragraphs with inline images and headings (H2, H3)"
}
]
}
```
**Note:** This entire section is one sequence because content flows naturally without structural breaks.
---
## Common Mistakes to Avoid
**Using block names in descriptions:**
❌ "Hero block with heading and buttons"
✓ "Large centered heading, paragraph, two buttons stacked vertically"
**Not identifying breaking points:**
❌ Describing entire section as one sequence when there are clear shifts
✓ Identifying where content type changes and breaking into sequences
**Being too granular:**
❌ Each element as separate sequence: "Heading", "Paragraph", "Button"
✓ Related elements together: "Heading, paragraph, two buttons stacked vertically"
**Mixing analysis levels:**
❌ Analyzing multiple sections at once
✓ Focus on ONE section at a time (per invocation)
**Making authoring decisions:**
❌ "This should be a cards block because..."
✓ "Grid of 4 items with images and text" (neutral description)
© adobe · Apache-2.0 · adobe/skills