Skip to content

feat: Add optel-interpreter skill for EDS content ops - #188

Open
focusgts wants to merge 6 commits into
adobe:mainfrom
focusgts:feat/eds-optel-interpreter
Open

feat: Add optel-interpreter skill for EDS content ops#188
focusgts wants to merge 6 commits into
adobe:mainfrom
focusgts:feat/eds-optel-interpreter

Conversation

@focusgts

Copy link
Copy Markdown
Contributor

Summary

Adds the optel-interpreter skill to the EDS content ops plugin.

Translates Adobe OpTel (RUM) Explorer data into a prioritized recommendations report — ranks worst pages by CWV metric, segments by device and page type, and traffic-weights findings.

Follows the established format (functional description, External Content Safety, concrete code examples, reference file for progressive disclosure, Apache-2.0). Submitted as a standalone PR per @trieloff's request to keep one skill per PR.

Test plan

  • tessl-review passes (≥80

- Explorer is at www.aem.live/tools/oversight/explorer.html
- RUM Bundler API is path-based (/bundles/{domain}/{year}/{month}/{day})
  with the domain key as ?domainkey=, not a Bearer header
- Correct the bundle/event response shape (rumBundles, events[].checkpoint)

Co-Authored-By: claude-flow <ruv@ruv.net>

@trieloff trieloff left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

point your agent to adobe/helix-home#473 and feel free to steal the best parts.


## What Is OpTel Explorer?

Adobe rebranded RUM (Real User Monitoring) Explorer to Operational Telemetry Explorer in early 2025. The tool is available at `www.aem.live/tools/oversight/explorer.html` and requires a domain key (passed as the `?domainkey=` query parameter), which is provisioned when a site is onboarded to EDS. OpTel captures data from real user sessions — not synthetic tests — by injecting a lightweight sampling script into every EDS page. The data includes Core Web Vitals (LCP, CLS, INP), page view counts, traffic referrers, device types (mobile, desktop, tablet), browser types, geographic regions, and engagement signals.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's now on tools.aem.live

| Traffic numbers seem impossibly low | Sampling rate not accounted for | Multiply the raw count by the sampling ratio (typically 100x) to estimate actual traffic |
| CWV data is missing for Safari users | Safari does not fully support the Performance Observer API | Acknowledge the gap — CWV data is primarily from Chromium browsers; Safari metrics may be underrepresented |
| Metrics fluctuate wildly day to day | Low traffic volume produces noisy samples | Use a wider date range (7-30 days) to smooth out sampling variance |
| LCP shows "good" but pages feel slow | TTFB may be high, which is not captured separately in CWV | Check server response time independently using curl or WebPageTest |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TTFB always contributes to LCP, so a good LCP and a bad TTFB are almost impossible. The "feels slow" is likely INP, not TTFB.

INP measures responsiveness to user interaction.
- **Distribution**: Percentage of interactions with INP > 200ms.
- **Worst pages**: Top N URLs by p75 INP (`cwvINP`).
- **Common EDS causes**: Heavy block decoration JS (accordions, tabs, carousels), synchronous layout reads followed by DOM writes (forced reflows), third-party scripts adding event listeners globally, or large DOM size from deeply nested block structures.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Observation and Mutation listeners, in particular.


Record the **domain**, **date range**, and **sampling rate** (if known). If the sampling rate is not provided, note that absolute traffic numbers are estimates.

### Fetching OpTel Data via the RUM API

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should probably use the adobe/rum-distiller library.

…V accuracy

- OpTel Explorer is at www.aem.live/tools/rum/explorer.html (verified live; the
  tools.aem.live host serves admin tools, no Explorer there)
- Fetch/process bundles with Adobe's official @adobe/rum-distiller from
  bundles.aem.page (replaces stale rum.hlx.page + hand-rolled parsing)
- Correct the TTFB/LCP troubleshooting row: TTFB is a component of LCP, so a
  slow *feel* is an INP problem, not TTFB
- Add MutationObserver / observation listeners as a common INP cause

Addresses @trieloff review on adobe#188.
@focusgts

focusgts commented Jul 7, 2026

Copy link
Copy Markdown
Contributor Author

Thanks Lars, done. Now uses adobe/rum-distiller from bundles.aem.page instead of hand-parsing events. Fixed the TTFB row: since TTFB is a component of LCP, a sluggish feel is really an INP problem. Added MutationObserver / observation listeners as a common INP cause.

On the Explorer URL: I went with www.aem.live/tools/rum/explorer.html for now, since that's the current OpTel Explorer I could confirm was live and linked from the docs. I may well have been looking in the wrong place for the tools.aem.live version, so if you can point me at the exact path you meant, I'll switch it over right away. Pushed.

Trim the Related Skills list to cwv-optimizer (merged); re-add
performance-budget and experiment-designer when those skills land,
per @trieloff review on adobe#186.
@focusgts

focusgts commented Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

cc @trieloff

Friendly nudge — the review feedback was addressed and pushed on July 7: the skill now uses adobe/rum-distiller from bundles.aem.page instead of hand-parsing events, the TTFB/INP framing is fixed, and MutationObserver was added as a common INP cause.

One question still open for you from that comment: which Explorer URL you'd prefer. I went with www.aem.live/tools/rum/explorer.html since that's the one I could confirm live and linked from the docs — happy to switch to the tools.aem.live path if you can point me at it.

On the red tessl checks: they appear CI-side — the runs on this fork PR sat waiting for an environment approval and timed out after 30 days ("The deployment was rejected or didn't satisfy other protection rules"), the same class of red check #186 merged with.

@focusgts

Copy link
Copy Markdown
Contributor Author

Thanks @trieloff, addressed. The TTFB/LCP note is rewritten: a good LCP already implies an acceptable TTFB, so a slow feel is almost always an INP problem, and the skill now points to the INP breakdown. Observation and Mutation listeners are called out as a common INP cause during decoration. The skill uses @adobe/rum-distiller for programmatic OpTel access now, with a DataChunks example. On the URL: the OpTel Explorer resolves at www.aem.live/tools/rum/explorer.html (returns 200), while tools.aem.live hosts the admin tools but not the explorer itself, so I kept the working link. Happy to switch it if there is a newer canonical home. Ready for re-review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants