| name | divi-5-docs-skill |
| description | Write, maintain, and review documentation pages for the Divi 5 Technical Documentation project. Use when creating new Divi 5 doc pages, processing scraped content from elegantthemes.com, reviewing contributions, updating existing docs, or working on any content for the divi-docs GitHub repository. Produces correctly formatted Markdown with proper frontmatter, screenshot references, and consistent structure. |
Divi 5 Technical Documentation ā Claude Skill
Overview
This skill produces documentation pages for the Divi 5 Technical Documentation project (https://github.com/16wells/divi-docs). Every page follows a strict template, uses YAML frontmatter, and targets the MkDocs Material static site generator.
Scope: Divi 5 only. Divi 4 is being phased out and is not documented in this project.
Content Pipeline
Documentation is built through a scrape-then-enrich workflow:
- Scrape: Content is crawled from elegantthemes.com and other Divi resources using
scripts/scrape_docs.py
- Draft: Scraped content is converted to structured Markdown matching our template
- Enrich: Claude (in this project) or human contributors add tested code examples, screenshots, troubleshooting tips, and cross-references
- Screenshot:
scripts/capture_screenshots.py captures, crops, and optimizes screenshots from live Divi sites
- Review: All content goes through PR review before publishing
- Update: When source material changes, pages are re-scraped and diffs are reviewed
When processing scraped content, Claude should:
- Restructure the raw content to match the doc template below
- Fill in settings tables from the scraped data (every setting, not just common ones)
- Add
<!-- TODO: ... --> markers for anything that needs human verification
- Flag any content that seems outdated or inconsistent
- Add
source_url to frontmatter so we can re-scrape later
Repository Structure
divi-docs/
āāā mkdocs.yml ā Site config and navigation
āāā scripts/
ā āāā scrape_docs.py ā Content scraper
ā āāā capture_screenshots.py ā Screenshot tool
ā āāā screenshots.yml ā Batch screenshot config
āāā docs/
ā āāā index.md ā Homepage
ā āāā manifest.json ā Machine-readable doc map
ā āāā contributing.md ā How to contribute
ā āāā assets/
ā ā āāā screenshots/ ā All screenshots organized by section
ā ā āāā modules/
ā ā ā āāā blurb/
ā ā ā āāā text/
ā ā ā āāā ...
ā ā āāā builder/
ā ā āāā theme-options/
ā ā āāā ...
ā āāā modules/ ā Individual module docs
ā āāā theme-options/ ā Theme Options panel settings
ā āāā builder/ ā Visual Builder + Theme Builder
ā āāā api/ ā Hooks, filters, custom modules
ā āāā css-reference/ ā Class names, selectors, overrides
ā āāā recipes/ ā Step-by-step how-to guides
ā āāā troubleshooting/ ā Common issues and fixes
āāā templates/
āāā doc-template.md ā Template for new pages
Page Template
Every documentation page MUST follow this structure:
---
title: "Human-Readable Title"
category: modules | theme-options | builder | api | css-reference | recipes | troubleshooting
tags: [tag1, tag2, tag3]
related: [other-page-slug, another-page-slug]
divi_version: "5.x"
last_updated: YYYY-MM-DD
source_url: "https://elegantthemes.com/..."
---
# Page Title
One-sentence description of what this is and what it does.
## Overview
2-3 paragraphs: what it is, when/why to use it, how it fits into Divi 5.
{ loading=lazy }
*Caption describing what the screenshot shows.*
## Settings & Options
### Content Tab
| Setting | Type | Default | Description |
|---------|------|---------|-------------|
| Name | type | default | What it does |
{ loading=lazy }
### Design Tab
| Setting | Type | Default | Description |
|---------|------|---------|-------------|
{ loading=lazy }
### Advanced Tab
| Setting | Type | Default | Description |
|---------|------|---------|-------------|
## Code Examples
Real, tested code with language-tagged fenced blocks.
## Common Patterns
2-3 real-world use cases with screenshots of the end result.
{ loading=lazy }
*Three-column blurb card grid with hover effects.*
## Elegant Themes tutorials
Long-form posts on the Elegant Themes **blog** (Divi Resources, Theme Releases). Link them here when a tutorial teaches the same feature as this page. Use a short bullet list; each link should open in a new tab: `[Post title](https://www.elegantthemes.com/blog/...){:target="_blank"} ā one-line context`.
Add new URLs to `planning/et-blog-tutorials-map.md` for weekly maintenance.
## Version Notes
!!! note "Divi 5 Only"
This page documents Divi 5 behavior exclusively.
## Troubleshooting
Known issues with admonition blocks.
## Related
- [Related Page](../category/slug.md)
Screenshot Conventions
Screenshots are central to this project. Every doc page should include screenshots of:
- The module/feature in the Visual Builder ā what it looks like when editing
- Each settings tab ā Content, Design, Advanced panels
- Front-end output ā what the module renders on a live site
- Common patterns ā real-world usage examples
- Before/after for troubleshooting sections where applicable
File Organization
docs/assets/screenshots/
āāā {category}/
āāā {page-slug}/
āāā overview.png ā Hero screenshot of the feature
āāā settings-content.png ā Content tab in settings panel
āāā settings-design.png ā Design tab in settings panel
āāā settings-advanced.png ā Advanced tab in settings panel
āāā frontend-default.png ā Default front-end rendering
āāā pattern-{name}.png ā Common pattern examples
āāā issue-{name}.png ā Troubleshooting screenshots
Screenshot Naming
- Lowercase with hyphens:
settings-content.png, not Settings Content.png
- Prefix with context:
settings-, frontend-, pattern-, issue-
- Be descriptive:
pattern-card-grid.png not pattern-1.png
Markdown Image Syntax
Always use MkDocs Material's lazy loading and include a caption:
{ loading=lazy }
*Caption explaining what we're looking at and why it matters.*
Capturing Screenshots
Use scripts/capture_screenshots.py for automated captures:
- Element-specific captures use CSS selectors (e.g.,
--selector ".et_pb_blurb")
- Settings panels use
--selector ".et-fb-settings-content"
- Images are auto-optimized to max 1200px wide at 2x resolution for retina
- Batch configs go in
scripts/screenshots.yml
For manual screenshots (e.g., from the Visual Builder where automation is tricky):
- Capture at 2x resolution (retina)
- Crop to show only the relevant UI ā no browser chrome, no taskbar
- Save as PNG
- Run through the optimizer:
python3 scripts/capture_screenshots.py with the --max-width 1200 flag
- Place in the correct
docs/assets/screenshots/{category}/{slug}/ directory
Writing Standards
Scope
- Divi 5 only. Do not document Divi 4 behavior, settings, or differences.
- If a feature is new in Divi 5, just document it ā no need to say "new in Divi 5"
- If a feature existed before but works differently now, just document the current behavior
Tone
- Write for practitioners ā assume WordPress knowledge, don't assume Divi expertise
- Be specific and precise ā document actual behavior, not marketing language
- Show, don't just tell ā screenshots and code examples over descriptions
Code Examples
- Always use fenced code blocks with language tags:
php, css, ```html
- Test code before including it ā examples must actually work
- Include comments explaining non-obvious behavior
- Show both minimal and real-world usage
Settings Tables
- Document EVERY setting, not just the commonly used ones
- Include the type (text, toggle, select, range, color, upload, etc.)
- Include the default value
- Describe behavior, not just what the label says
- Group by tab: Content, Design, Advanced
Cross-References
- Use relative paths for internal links:
[Blurb Module](../modules/blurb.md)
- Include related pages in frontmatter AND in the Related section at the bottom
Elegant Themes blog tutorials (maintenance)
- When Divi Resources or Theme Releases publishes a tutorial for a documented feature, add
## Elegant Themes tutorials to the matching reference page (see template above) and a row to planning/et-blog-tutorials-map.md.
- Place the section immediately before
## Version Notes when that heading exists; otherwise immediately before ## Related.
- Prefer linking to the blog post over pasting its full text ā the Help Center
source_url remains the primary re-scrape target unless superseded.
Admonitions (MkDocs syntax)
!!! note "Title"
Content
!!! warning "Title"
Content
!!! tip "Title"
Content
After Creating a New Page
- Add the page to the
nav section in mkdocs.yml
- Update the section's
index.md status table (change š² to ā
)
- Add entries to
scripts/screenshots.yml for screenshots needed
- Add related page cross-references to/from existing pages
- If Elegant Themes published a blog tutorial for the same feature, add
## Elegant Themes tutorials plus an entry in planning/et-blog-tutorials-map.md
Processing Scraped Content Workflow
When given raw scraped content to process:
- Extract the title and restructure into our template
- Build complete settings tables from any settings info in the source
- Mark missing settings with
<!-- TODO: Verify setting name/type/default -->
- Add screenshot placeholders with the correct file paths
- Add
source_url to frontmatter
- Generate a summary of what screenshots are needed
- List any
mkdocs.yml nav additions required
LLM Playbooks (docs/playbooks/)
Playbooks are LLM-first documentation. Their primary reader is an AI assistant that's been asked to help someone work with Divi 5. Their secondary reader is a human. This changes how they're written.
Playbook Frontmatter
---
title: "Playbook Title"
category: playbooks
tags: [relevant, tags]
related: [other-playbook-slug]
divi_version: "5.x"
last_updated: YYYY-MM-DD
content_type: playbook
audience: llm
---
Writing Style for Playbooks
Playbooks differ from reference docs in tone and structure:
- Imperative voice. "Do this. Then do this. Never do this." Not "you might consider..."
- Rules before explanations. State the rule, then explain why. LLMs need the rule first.
- Decision trees over descriptions. "If X, do A. If Y, do B." Not "there are several approaches."
- Explicit failure modes. Every rule should include what goes wrong if you break it.
- Diagnostic tables. End major playbooks with a symptom ā cause ā fix table.
- "When Assisting a User" sections. End each playbook with specific instructions for how an LLM should apply this knowledge during a conversation.
Playbook Structure Template
# Playbook: Title
**One-line summary of what this teaches.**
!!! danger "CRITICAL" (if applicable)
The most important rule, stated bluntly.
## Why This Matters
Brief context ā why an LLM needs to know this.
## Step-by-Step Process
Numbered, imperative steps.
## Known Gotchas
Admonition blocks for each gotcha.
## Quick Diagnostic Table (if applicable)
| Symptom | Cause | Fix |
## When Assisting a User
Instructions for how to apply this playbook in conversation.
Internals (docs/internals/)
Internals document Divi 5's undocumented architecture ā reverse-engineered from production builds. These are technical reference for developers and LLMs doing advanced work.
Writing Style for Internals
- Factual, precise, no opinions. Document observed behavior, not recommendations.
- Code-heavy. Show the actual data structures, JSON, and JavaScript.
- Date-stamped findings. Divi 5 is in beta; behavior may change. Always note when something was last verified.
- Cross-reference aggressively. Internals pages should link to each other and to relevant playbooks.
Content Types Summary
| Location | Content Type | Primary Reader | Tone |
|---|
docs/modules/ | Reference docs | Humans looking things up | Descriptive, thorough |
docs/theme-options/ | Reference docs | Humans looking things up | Descriptive, thorough |
docs/builder/ | Reference docs | Humans looking things up | Descriptive, thorough |
docs/api/ | Reference docs | Developers | Technical, precise |
docs/css-reference/ | Reference docs | Developers | Technical, precise |
docs/playbooks/ | LLM playbooks | AI assistants | Imperative, rule-based |
docs/internals/ | Architecture docs | Developers + advanced LLMs | Factual, code-heavy |
docs/recipes/ | How-to guides | Humans following steps | Step-by-step, practical |
docs/troubleshooting/ | Problem/solution pairs | Humans debugging | Diagnostic, direct |