plugins/aem/cloud-service/skills/aem-workflow/workflow-launchers/SKILL.md
Configure and deploy Workflow Launchers that automatically start workflows in response to JCR content changes on AEM as a Cloud Service
npx skillsauth add adobe/skills workflow-launchersInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill teaches you how to configure and deploy Workflow Launchers that automatically start workflows in response to JCR content changes on AEM as a Cloud Service.
/libsA Workflow Launcher (cq:WorkflowLauncher) is a JCR node that registers a JCR event listener. When a node event occurs at a path matching the launcher's glob pattern, node type, and conditions, the Granite Workflow Engine enqueues a workflow start.
The listener is managed by WorkflowLauncherListener (an OSGi service). It reads all active launcher configurations at startup and re-evaluates them when configurations change.
JCR Event (NODE_ADDED / NODE_MODIFIED / NODE_REMOVED)
↓
WorkflowLauncherListener (OSGi EventListener)
↓ matches: glob, nodetype, event type, conditions
Workflow Engine: enqueue WorkflowData
↓
Workflow Instance created at /var/workflow/instances/
| Property | Type | Description |
|---|---|---|
| eventType | Long | 1 = NODE_ADDED, 2 = NODE_MODIFIED, 4 = NODE_REMOVED, 8 = PROPERTY_ADDED, 16 = PROPERTY_CHANGED, 32 = PROPERTY_REMOVED |
| glob | String | Glob pattern matched against the event node path (e.g., /content/dam(/.*)?) |
| nodetype | String | JCR node type the event node must be (e.g., dam:AssetContent) |
| conditions | String[] | Additional JCR property conditions on the event node |
| workflow | String | Runtime path of the workflow model /var/workflow/models/<id> |
| enabled | Boolean | Whether the launcher is active |
| description | String | Human-readable description |
| excludeList | String[] | Workflow model IDs to exclude |
| runModes | String[] | Restrict to specific run modes (e.g., author) |
On Cloud Service, /libs is immutable. Store launcher configurations at:
/conf/global/settings/workflow/launcher/config/<launcher-name>
Maven project location:
ui.content/src/main/content/jcr_root/conf/global/settings/workflow/launcher/config/
my-custom-launcher/
.content.xml
Filter in filter.xml:
<filter root="/conf/global/settings/workflow/launcher/config/my-custom-launcher"/>
Node structure (.content.xml):
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root
xmlns:jcr="http://www.jcp.org/jcr/1.0"
xmlns:cq="http://www.day.com/jcr/cq/1.0"
jcr:primaryType="cq:WorkflowLauncher"
eventType="{Long}1"
glob="/content/dam(/.*)?/jcr:content/renditions/original"
nodetype="nt:file"
workflow="/var/workflow/models/dam/update_asset"
enabled="{Boolean}true"
description="Start DAM update workflow on new original rendition upload"
runModes="[author]"/>
To disable or modify an OOTB launcher (e.g., dam_update_asset_create):
/libs/settings/workflow/launcher/config/dam_update_asset_create to /conf/global/settings/workflow/launcher/config/dam_update_asset_createenabled="{Boolean}false" to disable it)| Launcher | Trigger | Workflow |
|---|---|---|
| dam_update_asset_create | NODE_ADDED on dam:AssetContent under /content/dam | DAM Update Asset |
| dam_update_asset_modify | NODE_MODIFIED on asset properties | DAM Update Asset |
| dam_xmp_writeback | NODE_MODIFIED on rendition | DAM Writeback |
| update_page_version_* | Node events on cq:Page jcr:content | Page Version Create |
To listen for both ADD and MODIFY, combine event types:
eventType="{Long}3" <!-- 1 (ADD) + 2 (MODIFY) = 3 -->
The conditions array lets you add JCR property conditions on the triggering node:
conditions="[property=cq:type,value=publicationevent,type=STRING]"
Condition format: property=<name>,value=<value>,type=<JCR_TYPE> (type is optional, defaults to STRING).
Use runModes to restrict:
runModes="[author]" <!-- only fires on Author -->
runModes="[publish]" <!-- only fires on Publish -->
Omit runModes to fire on all run modes.
/conf/global/settings/workflow/launcher/config/ in CRXDE Lite for your deployed configsWorkflowLauncherListener service propertiescurl -u admin:admin http://localhost:4502/etc/workflow/launcher.json| Reference | What It Covers |
|---|---|
| references/workflow-launchers/launcher-config-reference.md | Full property spec and XML templates |
| references/workflow-launchers/condition-patterns.md | Common condition patterns, glob syntax, event type codes |
| references/workflow-foundation/architecture-overview.md | Granite Workflow Engine overview |
| references/workflow-foundation/cloud-service-guardrails.md | Cloud Service constraints for config paths |
| references/workflow-foundation/jcr-paths-reference.md | Where launchers live in the JCR |
tools
Identifies which items (pages, campaigns, products, channels, regions) had the biggest increases or decreases for a key metric between two time periods. Use this skill when someone asks "what's up and what's down," "which campaigns moved the most," "top gainers and losers," "what pages are trending," "show me what changed by channel," or any variation of identifying the biggest movers and decliners for a metric.
tools
Compares the performance of two or more audience segments across key metrics side by side. Use this skill when someone wants to compare audiences, cohorts, or groups — for example, "how do mobile users compare to desktop users on conversion," "compare new vs. returning visitors," "show me the difference between these two segments," "compare these audiences on our KPIs," or "which segment performs better." Also trigger for "segment comparison," "audience comparison," or "cohort comparison."
business
Produces a compact KPI digest showing how key metrics changed over a period and what's driving the movement. Use this skill when someone asks for a performance summary, a weekly recap, a morning briefing, a KPI update, or any variation of "how did we do this week/month." Also trigger for requests like "give me a performance overview," "what moved in the last 7 days," "pull our KPI report," or "summarize our metrics."
testing
Analyzes a multi-step conversion funnel to find where users drop off and which steps have the worst leakage. Use this skill when someone describes a journey or funnel and asks about conversion rates, drop-off, fallout, or step completion. Trigger for phrases like "analyze our onboarding funnel," "where are users dropping off," "what's our checkout conversion rate," "funnel analysis," "show me fallout between these steps," or "which step loses the most users."