Content operations skills for AEM Edge Delivery Services: page auditing, SEO optimization, AI search (GEO), WCAG accessibility, bulk metadata, structured data, sitemap validation, and content diffing. Complements the EDS development skills with operational tooling for content teams.
90%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Sources: Operational Telemetry, Developing Operational Telemetry and the open data of emigrationbrewing.com, read in November 2026. The library that reads bundles is in rum-distiller.md.
A bundle is one sampled page view. The bundle API returns { "rumBundles": [...] } for a slot.
| Field | Meaning |
|---|---|
url | The page, without query parameters. |
userAgent | Device class, operating system and engine, for example mobile:ios:webkit or desktop:windows:blink. Bots are bot:…. |
weight | How many page views this bundle stands for. 100 at the default sampling rate. |
time, timeSlot | UTC. Minutes are rounded down to the hour. |
events | Checkpoints of the page view, each with checkpoint, timeDelta, and often source and target. The cwv-lcp, cwv-cls, cwv-inp and cwv-ttfb events have the measurement in value. |
What source and target hold depends on the checkpoint:
| Checkpoint | source | target |
|---|---|---|
cwv-lcp | Selector of the LCP element | URL of the LCP image |
cwv-cls | Selector of an element that shifted | |
click | Selector of the clicked element | Link target, if it was a link |
viewblock | Class name of the block | |
viewmedia | Selector of the element | URL of the image or video |
enter | Referrer, empty for a direct visit | visible or hidden: whether the page opened in the foreground |
navigate | The page of this site the visitor came from | visible or hidden |
reload, back_forward | The page | visible or hidden |
paid | The vendor, for example google | The click id parameter, for example gclid |
utm | The parameter, for example utm_source | Its value |
error | Where the unhandled JavaScript error came from | The error message |
missingresource | URL that failed to load | HTTP status |
formsubmit | The form | Form action |
A site can send checkpoints of its own. The checkpoints of the report list what a site sends. Look at the source and target of a checkpoint in the data before you interpret it.
Typical causes on Edge Delivery Services for LCP and INP. For CLS this file has none: go to cwv-optimizer. Confirm each one on the page before you report it as the cause.
lcpElements..aem.live host.mobile than on desktop points at the bytes before LCP, because mobile has less bandwidth.MutationObserver, IntersectionObserver, ResizeObserver) that do work on every change during decoration. This is common and easy to overlook.Domain, period, device filter, page views with their margin, and one sentence on the state of the site. Name the slots that failed to load.
| Metric | p75 | Samples | Rating | Good share | Baseline p75 | Baseline samples | Changed |
|---|---|---|---|---|---|---|---|
| LCP | yes or not shown, with the p-value | ||||||
| LCP, page views with a click | |||||||
| CLS (Chromium only) | |||||||
| INP |
Leave the baseline columns out when there is no baseline period.
The entries of change.pagesWorse, when there is a baseline period.
For each of the top entries of pagesToFix: the URL pattern, page views, the failing metric with p75 and samples, the likely cause, and the fix to try with cwv-optimizer.
What differs between mobile and desktop, and which elements are the LCP.
Numbers with too few samples, slots that failed, metrics a browser doesn't report, and the pages that are not in the sample (pagesEstimated against pagesSeen).
| Symptom | Cause | What to do |
|---|---|---|
HTTP 403 for every slot | The key is not valid for this domain. | Ask the user for the domain exactly as the Explorer shows it, and for the key of that domain. |
HTTP 404 | The path is not a month, day or hour. | Use YYYY/MM, YYYY/MM/DD or YYYY/MM/DD/HH. |
| Zero bundles | No sampled page view in that slot. | Try a month slot. |
| Every Core Web Vitals value is missing in a script of your own | addCalculatedProps did not run. | Run it on each bundle before load(). |
cls.samples is far below lcp.samples | WebKit sends no CLS. | Report CLS as Chromium data. |
.tessl-plugin
skills
accessibility-fix
bulk-metadata
content-audit
content-diff
cwv-optimizer
geo-rewrite
heading-optimizer
image-seo
internal-linking
link-rot-scanner
optel-interpreter
performance-budget
product-page-seo
query-index-optimizer
sitemap-audit
structured-data