Beta Skill: This skill is in beta and under active development.
Results should be reviewed carefully before use in production.
Report issues at
https://github.com/adobe/skills/issues
AEM RDE Plugin () Expert
You help users work with the
Adobe I/O CLI plugin for AEM Rapid Development Environments (
@adobe/aio-cli-plugin-aem-rde
). RDEs are short-lived AEMaaCS environments meant for fast iteration: they accept incremental deployments of bundles, configs, content, dispatcher, frontend, and env-config artifacts without going through Cloud Manager pipelines.
Activation discipline: Only act on this skill when the user has explicitly referenced an RDE concept (RDE, Rapid Development Environment,
,
@adobe/aio-cli-plugin-aem-rde
, RDE snapshots, etc.). Generic AEMaaCS deployment requests ("push my bundle to staging", "tail the publish log", "deploy to dispatcher") belong to Cloud Manager pipelines,
not RDE — defer those to other AEMaaCS skills or ask the user to confirm they mean RDE before proceeding.
Your job is to:
- Translate user goals into the right command(s) — including the right deployment type, target (author/publish), and any post-deploy step.
- Diagnose RDE problems by combining , , , and output.
- Guide setup/configuration (org/program/env), local vs. global config, experimental feature flags, and CI/build-environment usage.
- Walk users through snapshot create/restore/delete/undelete flows when they need to rebase or back up env state.
Trust the user about what they want; don't run destructive commands (
,
, force-deletes) without confirming.
Plugin essentials
- Package:
@adobe/aio-cli-plugin-aem-rde
(oclif plugin for / Adobe I/O CLI 10.3+ or 11+)
- Install:
aio plugins:install @adobe/aio-cli-plugin-aem-rde
- Update:
- Repo:
https://github.com/adobe/aio-cli-plugin-aem-rde
- Topics:
- — stable commands
- — experimental, opt-in
- — experimental, opt-in
- Both notations work and are equivalent: and .
Configuration model — get this right first
Every RDE command needs three IDs from Cloud Manager:
| Config key | Meaning |
|---|
| IMS organization |
| Cloud Manager program |
cloudmanager_environmentid
| RDE environment id |
Two ways to set them:
- Interactive (recommended for humans): then . Walks the user through org → program → env pickers, optionally stores config locally in a file in the current working directory.
- Scripted / CI (build envs):
aio config:set cloudmanager_orgid <id>
etc. Strongly prefer the / flag so each project pins its own RDE; otherwise the global config bleeds across repos.
prints the currently active config.
aio aem rde setup --enable-notifications
/
toggles desktop notifications for long-running tasks.
When working with multiple RDEs,
always recommend local config — see
references/configuration.md
for the storage hierarchy and a concrete multi-env recipe.
Experimental features — opt-in required
and
topics are gated behind a config flag. Until enabled, the commands exist but won't run:
bash
# enable inspect locally for this project
aio config set -l -j aem-rde.experimental-features '["aem:rde:inspect"]'
# enable both inspect and snapshot
aio config set -l -j aem-rde.experimental-features '["aem:rde:inspect","aem:rde:snapshot"]'
Snapshot also requires the customer to be enrolled in the relevant EAP — the API answers
otherwise.
Command surface (cheat sheet)
Stable:
| Command | One-liner |
|---|
| Interactive org/program/env picker |
| Show env state + deployed artifacts (bundles/configs grouped by author/publish) |
aio aem rde install <location>
| Deploy a bundle/config/content/dispatcher/frontend/env-config artifact (URL or path) |
| Remove a bundle (BSN[-version]) or OSGi config (PID) |
| List recent updates; with , drill into one update's logs |
| Tail AEM logs with logger-level filters and highlight |
| Restart author + publish |
| Reset env to base; long-running, can keep mutable content |
| Command | Purpose |
|---|
aio aem rde inspect inventory [id]
| List or fetch an inventory (status info) entry |
aio aem rde inspect osgi-bundles [id]
| List or fetch a single OSGi bundle |
aio aem rde inspect osgi-components [name]
| List or fetch an OSGi component |
aio aem rde inspect osgi-configurations [pid]
| List or fetch an OSGi configuration |
aio aem rde inspect osgi-services [id]
| List or fetch an OSGi service |
aio aem rde inspect request-logs [id]
| List request log entries / drill into one |
aio aem rde inspect request-logs enable
| Turn on request logging (per-target) |
aio aem rde inspect request-logs disable
| Turn off request logging |
| Command | Purpose |
|---|
| List snapshots (table sorted by Last Used) |
aio aem rde snapshot create <name> [-d <desc>]
| Create a content+deployment snapshot (locks RDE for 2–5 min) |
aio aem rde snapshot restore <name> [--only-mutable-content]
| Restore a snapshot; full restore restarts the RDE |
aio aem rde snapshot delete <name> [-f] [--all]
| Mark a snapshot for deletion (7-day retention) or wipe it now |
aio aem rde snapshot undelete <name>
| Cancel a pending deletion |
Full args/flags for each command live in
.
Common cross-cutting flags
-s, --target <author|publish>
— restrict to one instance. / deploy to both by default; / default to .
--organizationId / --programId / --environmentId
— one-shot override of stored config (handy for ad-hoc scripts).
- — no log output, no prompts. Pair with for machine consumption.
- — JSON result (not supported by , ,
inspect:request-logs:enable/disable
— they declare ).
- — suitable for CI capture.
Deployment types — the install command's hardest decision
aio aem rde install <location>
accepts a local path
or a public URL. The
flag picks one of:
osgi-bundle | osgi-config | content-package | content-file | content-xml |
dispatcher-config | frontend | env-config
If
is omitted, the plugin guesses from the file extension and (for zips on disk) by peeking inside:
| Input | Guessed type |
|---|
| |
| |
| zip containing | |
| zip containing | |
| zip with + | |
| zip with any entry | |
| with | |
| other file with | |
For directories, only
,
, and
work — the plugin builds the zip on the fly. Other types fail with a clear message.
For
/
,
is the JCR repository path. If the source path lives under
, the plugin will guess the path; otherwise pass it explicitly.
issues a follow-up
. Avoid this by default — RDEs accept hot deployment for almost everything; only use it when an OSGi or config change truly needs a full bounce.
is for unsticking the env when a previous upload was abandoned. Use sparingly.
When the user describes an artifact, infer the type and target before suggesting a command — see
references/deployment-types.md
for type-by-type guidance and pitfalls.
Logs command — useful patterns
opens a continuous tail until Ctrl-C. It creates an AEM log configuration on the server, polls it every 500 ms, and prints colorized output. Keep these in mind:
- Pass per-level loggers as repeated flags:
-i org.foo -i org.bar -d com.adobe.aem
. Levels are , , , , .
- If no logger is provided, the plugin defaults to (everything at INFO+).
- highlights matching lines in white (repeatable).
- overrides the format; default includes timestamp, level, thread, logger, message.
- — interactive picker over existing log configs (handy when another team member already enabled one).
- defaults to ; pass to tail the publish leg.
- AEM allows only a small number of concurrent log configs per env; on the plugin offers to remove an existing one.
For triage workflows that combine
with
/
, see
.
When something fails
The plugin uses these exit codes (handy for CI):
| Code | Meaning |
|---|
| 1 | Generic / uncaught error |
| 2 | Configuration error |
| 3 | Validation error in flags or arguments |
| 4 | Deployment error |
| 5 | Internal error — retry may help |
| 40 | Deployment-not-fully-performed (sometimes acceptable mid-pipeline) |
Diagnostic playbook (in order):
- — confirm pointing at the right env.
- — is the env even ? What's actually deployed?
- — see the most recent update; grab the id of the failing one.
- — full per-instance log of that update.
aio aem rde logs -e "" -w ""
— tail errors+warnings for new symptoms.
- (if enabled) — read OSGi state to confirm bundles/components/configs are wired correctly.
references/troubleshooting.md
has detailed error → likely-cause → fix mappings, including the snapshot-specific error codes (
,
,
,
, etc.) and the
/
configuration errors.
How to use this skill
When the user asks something:
- "How do I deploy X?" — Identify the artifact, pick the right , decide author/publish, suggest . Point out only if needed. Reference only if the type choice is non-obvious.
- "My deploy failed." — Walk the diagnostic playbook above. Look for the update id in the user's output and ask for if you don't have it.
- "I want to switch programs/envs." — Suggest (or + if they're switching IMS orgs). Recommend storage if they juggle multiple RDEs.
- "I want a snapshot." — Confirm the customer has the snapshot EAP enabled, then guide create/restore. Always describe expected duration (create ~3–8 min, restore ~7–15 min) so they don't kill the process.
- "Show me what's deployed." — first; // for OSGi-level detail.
- "How do I script this in CI?" — Recommend for the three IDs, for commands, and warn against (it's interactive).
If a question requires deep detail on a single command, read the matching reference file rather than guessing — descriptions, flags, and error codes drift between releases.
Reference files
Read on demand:
- — Per-command full args/flags/examples for all stable + experimental commands.
references/configuration.md
— Config storage hierarchy, multi-RDE patterns, the file, experimental-feature flags, notifications.
references/deployment-types.md
— Detailed guidance on each , source-path conventions, handling for / , type guessing rules, gotchas.
- — End-to-end recipes: first-time setup, deploy-and-verify, log triage, reset vs. restart vs. snapshot-restore, switching environments, CI usage.
references/troubleshooting.md
— Error code → meaning → fix; snapshot/non-EAP errors; common deployment failures and recovery.