Skip to content

adobe-rnd/ew-extensions

Overview

This repository hosts extensions for the Experience Workspace (EW). Each extension is a self-contained DA App SDK application deployed on its own AEM Edge Delivery Services site and loaded into the EW shell.

Extensions add capabilities to EW — editors, panels, tools, and integrations — without modifying the core platform.

Extensions

Extension Path Entry point Description
Skills Editor apps/skills/ tools/skills.html Manage skills, agents, MCP servers, prompts, and memory

More extensions coming soon.

Architecture

Every extension follows the same pattern:

  1. Block contract — each extension exports a decorate(block) function, loaded by da-nx's loadBlock via providers.ew routing (triggered by the ew- class prefix).
  2. EW hosts the extension at da.live/apps/{extension}#/{org}/{site}. The page contains a <div class="ew-{extension}"> that loadBlock resolves to this repo.
  3. Extension component — a LitElement (or vanilla JS module) that owns its own UI, state, and data operations against the DA Admin API.

Local development

To develop locally, run three servers:

# 1. da-live (port 3000)
cd ~/Projects/DA/da-live && aem up

# 2. da-nx (port 6456)
cd ~/Projects/DA/da-nx && npm start

# 3. ew-extensions (port 3001)
cd ~/Projects/DA/da-skills && aem up

Then navigate to:

http://localhost:3000/apps/skills?nx=local&nxver=2#/{org}/{site}

The ?nx=local&nxver=2 params tell da-live to load da-nx from localhost, which in turn resolves ew-* blocks to :3001.

For isolated extension development (no auth, no da-nx routing):

http://localhost:3001/apps/skills/skills.html

Adding an extension

  1. Create a new directory under apps/{your-extension}/.
  2. Add an entry point at tools/{your-extension}.html that imports the DA App SDK.
  3. Implement your extension component — see apps/skills/ for a reference implementation.
  4. Update the extensions table above.

Authentication

The DA App SDK handles authentication for all extensions. When EW loads an extension in an iframe, the SDK passes the user's IMS access token via PostMessage. Extensions call initAuth(token) to configure subsequent DA Admin API requests.

No separate login flow is needed — the user is already authenticated in EW.

CI

Linting (ESLint + Stylelint) runs on every push that touches apps/. E2e tests (Playwright) are available locally — see test/e2e/README.md for the tiered test strategy.

About

A repo to host Experience Workspace ecosystem extensions and apps

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors