with one click
authoring-analysis
// Analyze content sequences and determine authoring approach (default content vs blocks). Validates block selection and section styling for import/migration to AEM Edge Delivery Services.
// Analyze content sequences and determine authoring approach (default content vs blocks). Validates block selection and section styling for import/migration to AEM Edge Delivery Services.
Review code for AEM Edge Delivery Services projects. Use at the end of development (before PR) for self-review, or to review pull requests. Validates code quality, performance, accessibility, and adherence to EDS best practices.
Survey available blocks from local AEM Edge Delivery Services project and Block Collection to understand the block palette available for authoring. Returns block inventory with purposes to inform content modeling decisions.
Searches the aem.live documentation for information on AEM Edge Delivery Services features. Use this skill when you need more information about a feature, want guidance on how to implement a feature, and using existing tools you have to search the web isn't turning up relevant results.
Generate structured HTML from authoring analysis for AEM Edge Delivery Services. Creates section structure, applies block tables, handles metadata, and manages images folder.
Identify section boundaries and content sequences within a scraped webpage for AEM Edge Delivery Services import. Performs two-level analysis (sections, then sequences per section) and surveys available blocks.
Analyze content sequences within a section and provide neutral descriptions for AEM Edge Delivery Services. Invoked per section during page import to identify breaking points between default content and blocks.
| name | authoring-analysis |
| description | Analyze content sequences and determine authoring approach (default content vs blocks). Validates block selection and section styling for import/migration to AEM Edge Delivery Services. |
Determine authoring approach for EACH content sequence: default content or specific block.
Use this skill when:
Invoked by: page-import skill (Step 3)
From identify-page-structure skill, you need:
After completing Step 3 (analyzing all sequences), you MUST execute Step 3e if:
If NO sections meet these criteria ā Skip Step 3e If ANY sections meet these criteria ā Execute Step 3e for EACH qualifying section
Context: You now have:
FOR EACH content sequence, follow this mandatory process:
Question: "Can an author create this with normal typing in Word/Google Docs?"
Default content means:
NOT default content means:
Decision:
Examples:
"Large centered heading, paragraph, two buttons"
ā Can author just type heading, paragraph, links? YES
ā Decision: DEFAULT CONTENT ā
"Two centered buttons"
ā Can author just type two links? YES
ā Decision: DEFAULT CONTENT ā
"Four items in grid, each with image, heading, description"
ā Can author just type this? NO - requires grid structure
ā Decision: Proceed to Step 3b ā”ļø
"Expandable questions and answers"
ā Can author just type this? NO - requires interaction/decoration
ā Decision: Proceed to Step 3b ā”ļø
With block inventory context, ask: "Which available block would an author choose for this?"
DECISION TREE: When to Invoke content-modeling
OBVIOUS MATCH (Don't invoke content-modeling):
Pattern matches block purpose 1:1:
Criteria for OBVIOUS:
UNCLEAR MATCH (Invoke content-modeling):
Ambiguous which block to use:
Missing from inventory:
Complex authoring consideration:
Criteria for UNCLEAR:
Only if block not in Block Collection common set:
Invoke block-collection-and-party skill to:
CRITICAL: Before generating any HTML in next skill, fetch the pre-decoration HTML structure for ALL blocks you'll use.
# Get structure examples for each block
node .claude/skills/block-collection-and-party/scripts/get-block-structure.js cards
node .claude/skills/block-collection-and-party/scripts/get-block-structure.js tabs
node .claude/skills/block-collection-and-party/scripts/get-block-structure.js accordion
node .claude/skills/block-collection-and-party/scripts/get-block-structure.js columns
Why this prevents mistakes:
Use the output to:
Complete analysis for all sequences:
Section 1 (light):
- Sequence 1: "Large centered heading, paragraph, two call-to-action buttons"
ā Decision: DEFAULT CONTENT
ā Reason: Author can type heading, paragraph, links normally
ā Note: Prominent styling is a CSS concern
- Sequence 2: "Two images side-by-side"
ā Decision: Columns block (2 columns)
ā Reason: Side-by-side layout requires structure
ā Obvious match with "columns" block in inventory
Section 2 (light):
- Sequence 1: "Centered heading"
ā Decision: DEFAULT CONTENT
ā Reason: Just a heading - author types it
- Sequence 2: "Grid of 8 items, each with icon and short text"
ā Decision: Cards block
ā Reason: Repeating structured pattern, needs block
ā Obvious match with "cards" block in inventory
- Sequence 3: "Two centered buttons"
ā Decision: DEFAULT CONTENT
ā Reason: Just two links - author types them
Section 3 (grey):
- Sequence 1: "Eyebrow text, heading, paragraph, button stacked vertically"
ā Decision: DEFAULT CONTENT
ā Reason: Author types text and link normally
- Sequence 2: "Four items in grid, each with image, category tag, heading, description"
ā Decision: Cards block
ā Reason: Repeating structured pattern
ā Obvious match with "cards" block in inventory
Section 4 (dark):
- Sequence 1: "Tab navigation with three switchable content panels"
ā Decision: Tabs block
ā Reason: Interactive component, needs decoration
ā Obvious match with "tabs" block in inventory
ā ļø EXECUTION TRIGGER: This step is executed AFTER Step 3 is complete. Execute this step if and only if:
If NO sections meet these criteria ā Skip Step 3e entirely and proceed to next skill
If ANY sections meet these criteria ā You MUST execute all sub-steps below for EACH qualifying section
Why this validation matters:
When a section contains a single block, the background styling might be:
Without validation, we risk adding unnecessary section-metadata that conflicts with block styling or makes authoring more complex.
Sections with multiple sequences: Always keep section-metadata (styling applies to all content, not validated in Step 3e)
For EACH section with exactly one block, execute ALL these sub-steps:
Sub-step 1: Identify the candidate sections
Review your Step 3 output. Find sections where:
Example:
Section 1 (dark blue):
- Sequence 1: Large centered heading, paragraph, two buttons
ā Decision: Hero block
Section 3 (grey):
- Sequence 1: Tab navigation with three switchable panels
ā Decision: Tabs block
Sub-step 2: For each candidate section, examine the screenshot
Open screenshot.png and examine the section visually.
Ask these questions:
Q1: Is the background an image (photo, gradient, illustration)?
Q2: Does the content fill the colored area edge-to-edge, or is there visible section padding?
Q3: Does the block type typically have its own background styling?
Sub-step 3: Make the decision
Based on your analysis, decide for each single-block section:
SKIP section-metadata if:
KEEP section-metadata if:
Sub-step 4: Document your decisions
For each validated section, note:
Example output:
VALIDATED SECTIONS:
Section 1 (dark blue):
- Block: Hero
- Background: Full-width dark blue gradient image
- Layout: Edge-to-edge, no visible section padding
- Decision: SKIP section-metadata
- Reason: Background is hero's design, not section styling
Section 3 (grey):
- Block: Tabs
- Background: Solid grey (#f5f5f5)
- Layout: Content centered with visible padding (~80px on sides)
- Decision: KEEP section-metadata style="grey"
- Reason: Section provides container styling for tabs block
When in doubt:
If you're uncertain whether background is block-specific or section-wide:
Step 3e Completion Checklist:
Before proceeding to next skill, verify you have completed:
This skill provides complete authoring analysis:
1. Authoring decisions for all sequences:
2. Block structures fetched:
3. Section styling validation (if applicable):
Next step: Pass these outputs to generate-import-html skill