plugins/aem/6.5-lts/skills/aem-workflow/workflow-orchestrator/SKILL.md
Master entry point for all AEM Workflow tasks on AEM 6.5 LTS spanning development and production support
npx skillsauth add adobe/skills workflow-orchestratorInstall 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 is the master entry point for all AEM Workflow tasks on AEM 6.5 LTS — spanning both development (building workflows) and production support (debugging and triaging workflow issues). Read this skill first. It classifies the user's request and routes to the right sub-skill.
SKILL.md and its referencesworkflow-foundation references alongside the sub-skill references| User Says / Asks | Sub-Skill to Load |
|---|---|
| "Create a workflow model", "Add steps to a workflow", "Design an OR split", "I need a parallel review" | workflow-model-design |
| "Implement a custom process step", "Write a WorkflowProcess", "Create a ParticipantStepChooser", "Dynamic participant" | workflow-development |
| "Start a workflow from code", "Trigger a workflow via API", "Use Manage Publication with a workflow", "HTTP REST API to start a workflow" | workflow-triggering |
| "Configure a launcher", "Auto-start on asset upload", "Launcher not firing", "cq:WorkflowLauncher", "Overlay an OOTB launcher" | workflow-launchers |
| "How do workflows work?", "What is the Granite Workflow Engine?", "Explain workflow architecture" | Load workflow-foundation references only |
| User Says / Asks | Sub-Skill to Load |
|---|---|
| "Workflow is stuck", "Why isn't my workflow advancing?", "No work item", "Workflow failed", "Step shows error" | workflow-debugging |
| "Task not in Inbox", "User can't see work item", "Permissions error on workflow" | workflow-debugging |
| "Thread pool exhausted", "Auto-advancement not working", "Queue backlog", "Sling Jobs stuck" | workflow-debugging |
| "Repository bloat", "Too many workflow instances", "Purge not working", "Stale workflows" | workflow-debugging |
| "countStaleWorkflows", "restartStaleWorkflows", "retryFailedWorkItems", "JMX workflow" | workflow-debugging |
| "What workflow errors on host X?", "Workflow activity for the past N hours", "What should I collect?" | workflow-triaging |
| "Classify this workflow ticket", "What Splunk query should I use?", "What logs do I need?" | workflow-triaging |
| "Why did workflow X fail? Show me the error.", "Failure details for model Y" | workflow-triaging |
| "What does JMX returnSystemJobInfo show?", "Check queue depth via JMX" | workflow-triaging |
Routing heuristic:
workflow-model-design, workflow-development, workflow-triggering, workflow-launchers)workflow-debuggingworkflow-triagingworkflow-triaging to classify, then workflow-debugging for resolutionFor every workflow task on AEM 6.5 LTS, load in this order:
workflow-orchestrator/references/workflow-foundation/architecture-overview.md
workflow-orchestrator/references/workflow-foundation/api-reference.md
workflow-orchestrator/references/workflow-foundation/jcr-paths-reference.md
workflow-orchestrator/references/workflow-foundation/65-lts-guardrails.md
workflow-orchestrator/references/workflow-foundation/quick-start-guide.md
workflow-model-design/SKILL.md ← for model design tasks
workflow-development/SKILL.md ← for Java implementation tasks
workflow-triggering/SKILL.md ← for start/trigger tasks
workflow-launchers/SKILL.md ← for launcher config tasks
workflow-debugging/SKILL.md ← for production debugging tasks
workflow-triaging/SKILL.md ← for incident triage tasks
workflow-model-design:
workflow-model-design/references/workflow-model-design/step-types-catalog.md
workflow-model-design/references/workflow-model-design/model-xml-reference.md
workflow-model-design/references/workflow-model-design/model-design-patterns.md
workflow-development:
workflow-development/references/workflow-development/process-step-patterns.md
workflow-development/references/workflow-development/participant-step-patterns.md
workflow-development/references/workflow-development/variables-and-metadata.md
workflow-triggering:
workflow-triggering/references/workflow-triggering/triggering-mechanisms.md
workflow-triggering/references/workflow-triggering/programmatic-api.md
workflow-launchers:
workflow-launchers/references/workflow-launchers/launcher-config-reference.md
workflow-launchers/references/workflow-launchers/condition-patterns.md
workflow-debugging:
workflow-debugging/SKILL.md
workflow-debugging/reference.md
workflow-triaging:
workflow-triaging/SKILL.md
| Capability | Detail |
|---|---|
| JMX | Full access via Felix Console (/system/console/jmx) or JMX client |
| Retry failed items | JMX retryFailedWorkItems or Inbox Retry |
| Stale detection | JMX countStaleWorkflows |
| Stale restart | JMX restartStaleWorkflows(dryRun=true) then execute |
| Purge | JMX purgeCompleted(dryRun=true) or Purge Scheduler |
| Queue info | JMX returnSystemJobInfo, returnWorkflowQueueInfo |
| Log access | Direct filesystem (crx-quickstart/logs/) or AMS log access |
| Thread dumps | jstack or AMS support request |
| Config status ZIP | Felix Console → Status → Configuration Status |
| Config changes | Felix Console, OSGi config in repo, or CRX/DE |
Before doing anything, apply these constraints:
| Rule | Detail |
|---|---|
| Avoid editing /libs | Use overlays under /apps or store at /conf/global |
| Model design-time path | /conf/global/settings/workflow/models/<id> (preferred) or /etc/workflow/models/<id> (legacy) |
| Model runtime path (for API calls) | /var/workflow/models/<id> |
| Launcher config paths | /conf/global/settings/workflow/launcher/config/ (preferred), /apps/settings/workflow/launcher/config/ (overlay), or /etc/workflow/launcher/config/ (legacy) |
| Service users | Use ResourceResolverFactory.getServiceResourceResolver() with a sub-service; avoid loginAdministrative |
| OSGi annotations | DS R6 preferred; Felix SCR still supported on 6.5 LTS |
| Deploy via | Package Manager (CRX Package), Maven + Content Package Plugin, or ACS AEM Commons JCR |
| No javax.jcr.Session.loginAdministrative | Deprecated — use loginService() or ResourceResolverFactory |
Full detail: references/workflow-foundation/65-lts-guardrails.md
Author tier
│
├── Content Author
│ └── triggers via: Timeline UI / Manage Publication
│
├── Custom code (OSGi service / event handler / scheduler)
│ └── triggers via: WorkflowSession.startWorkflow()
│
├── Workflow Launcher (cq:WorkflowLauncher)
│ └── triggers via: JCR observation events
│
└── Replication Agent (6.5 LTS only)
└── triggers via: replication event / "Trigger on Receive"
↓
Granite Workflow Engine
↓
Workflow Instance (/var/workflow/instances/)
↓
Steps executed as Sling Jobs:
- PROCESS step → WorkflowProcess.execute()
- PARTICIPANT step → inbox task for user/group
- DYNAMIC_PARTICIPANT → ParticipantStepChooser.getParticipant()
- OR_SPLIT → route expression evaluates to true/false
- AND_SPLIT → parallel branches, AND_JOIN waits for all
workflow-model-design + workflow-development sub-skillsWorkflowProcess for the approve/reject step/conf/global/settings/workflow/models/ via Maven content packageworkflow-launchers sub-skillcq:WorkflowLauncher for NODE_ADDED on the DAM path/var/workflow/models//conf/global/settings/workflow/launcher/config/workflow-triggering sub-skillWorkflowStarterService using ResourceResolverFactory + WorkflowSessionworkflow-starter to workflow-process-service or a dedicated service userworkflow-launchers sub-skilldam_update_asset_create from /libs/settings/workflow/launcher/config/ to /apps/settings/workflow/launcher/config/enabled="{Boolean}false" on the overlayworkflow-triaging → classify as workflow_fails_or_shows_errorError executing workflow step on host + time rangereturnSystemJobInfo for queue/job metricsworkflow-debugging → map to runbook, walk decision treeworkflow-debugging → classify as workflow_stuck_not_progressingcountStaleWorkflows to check for stale instances039_Sling_Thread_Pools.txt)workflow-triaging → identify required inputs (host, time range, model, instance ID)countStaleWorkflows, returnSystemJobInfo, returnWorkflowQueueInforeferences/workflow-foundation/architecture-overview.md
references/workflow-foundation/api-reference.md
references/workflow-foundation/jcr-paths-reference.md
references/workflow-foundation/65-lts-guardrails.md
references/workflow-foundation/quick-start-guide.md
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."