Loading...
Loading...
Execute AEM Edge Delivery Services admin operations - list admins, add/remove users, preview, publish, unpublish content, clear cache, sync code, reindex, generate sitemap, manage snapshots, view logs, manage jobs, list sites, configure org/site settings, manage secrets and API keys. Also supports Document Authoring (DA) operations via admin.da.live - list/get/put content, copy, move, delete, versioning, and DA-specific preview/publish. Use for any Edge Delivery Services administrative task.
npx skill4agent add adobe/skills ops| Category | Examples |
|---|---|
| Content | preview /path, publish /path, unpublish /path, status /path |
| Cache | clear cache /path, force clear cache |
| Code | sync code, deploy code |
| Index | reindex /path, remove from index |
| Sitemap | generate sitemap |
| Snapshots | create snapshot X, publish snapshot X, approve snapshot X |
| Logs | show logs, show logs last hour |
| Users | add user@email as author/publish/develop, remove admin user@email, who am i |
| Jobs | list jobs, job status X, stop job X |
| Sites | list sites, switch to site-X, use branch feature-X |
| Config | show org config, show site config, update robots.txt |
| Secrets | list secrets, create secret, delete secret |
| API Keys | list API keys, create API key, revoke API key |
| Tokens | list tokens, create token, revoke token |
| Profiles | show profile config, create profile, delete profile |
| Index Config | show index config, update index config (query.yaml) |
| Sitemap Config | show sitemap config, update sitemap config (sitemap.yaml) |
| Versioning | list versions, restore version, rollback config |
| Pages | list pages, list all pages, show indexed pages |
| DA (Document Authoring) | da list, da source /path, da copy, da move, da delete, da config, da update config, da versions, da create version, da upload media, da auth |
resources/security.md/opsEdge Delivery Services Operations
Quick commands to try:
list pages - Show all indexed pages
who am i - Check your user profile
list sites - Show available sites
show site config - View site configuration
preview /path - Preview a content path
show logs - View recent activity
For the full command list: type help, /ops help, or what can you do?~/.aem/ops-config.jsoneval $(node -e "
const fs = require('fs');
try {
const c = JSON.parse(fs.readFileSync(process.env.HOME + '/.aem/ops-config.json', 'utf8'));
console.log('ORG=' + JSON.stringify(c.org || ''));
console.log('SITE=' + JSON.stringify(c.site || ''));
} catch(e) {
console.log('ORG='); console.log('SITE=');
}
")
echo "org=${ORG:-NOT SET} site=${SITE:-NOT SET}"ORGSITE"Previously used: org=, site={ORG}. Do you want to continue with these? If not, provide a different site URL (e.g.,{SITE})."https://main--mysite--myorg.aem.page/
ORGSITE"Enter the site preview/live URL for which you want to perform ops (e.g.,)."https://main--mysite--myorg.aem.page/
URL="$USER_INPUT"
if echo "$URL" | grep -q '\.aem\.page\|\.aem\.live'; then
HOST_PART=$(echo "$URL" | cut -d'/' -f3 | cut -d'.' -f1)
ORG=$(echo "$HOST_PART" | awk -F'--' '{print $NF}')
SITE=$(echo "$HOST_PART" | awk -F'--' '{print $(NF-1)}')
echo "Parsed from URL: org=$ORG site=$SITE"
fi.aem.page.aem.livemkdir -p "${HOME}/.aem"
node -e "
const fs = require('fs');
const p = process.env.HOME + '/.aem/ops-config.json';
let c = {};
try { c = JSON.parse(fs.readFileSync(p, 'utf8')); } catch(e) {}
c.org = '${ORG}';
c.site = '${SITE}';
fs.writeFileSync(p, JSON.stringify(c, null, 2));
"~/.aem/ops-config.jsongit remotefstab.yamlAUTH_TOKEN=$(node -e "
const fs = require('fs');
try {
const t = JSON.parse(fs.readFileSync(process.env.HOME + '/.aem/ims-token.json', 'utf8'));
if (t.authToken && t.authTokenExpiry > Math.floor(Date.now()/1000) + 60) {
process.stdout.write(t.authToken);
}
} catch (e) {}
")
echo "auth=${AUTH_TOKEN:+set}"AUTH_TOKENSkill({ skill: "aem-project-management:auth" })-H "x-auth-token: ${AUTH_TOKEN}"admin.hlx.pageresources/security.mdresources/sensitive.mdeval $(node -e "
const fs = require('fs');
try {
const c = JSON.parse(fs.readFileSync(process.env.HOME + '/.aem/ops-config.json', 'utf8'));
console.log('ORG=' + JSON.stringify(c.org || ''));
console.log('SITE=' + JSON.stringify(c.site || ''));
console.log('REF=' + JSON.stringify(c.ref || 'main'));
} catch(e) {
console.log('ORG='); console.log('SITE='); console.log('REF=main');
}
")
AUTH_TOKEN=$(node -e "
const fs = require('fs');
try {
const t = JSON.parse(fs.readFileSync(process.env.HOME + '/.aem/ims-token.json', 'utf8'));
process.stdout.write(t.authToken || '');
} catch (e) {}
")
echo "Config: org=$ORG site=$SITE ref=$REF auth=${AUTH_TOKEN:+set}"PROFILE_RESPONSE=$(curl -s -w "\n%{http_code}" \
-H "x-auth-token: ${AUTH_TOKEN}" \
"https://admin.hlx.page/profile")
HTTP_CODE=$(echo "$PROFILE_RESPONSE" | tail -n1)
PROFILE=$(echo "$PROFILE_RESPONSE" | sed '$d')
if [ "$HTTP_CODE" = "401" ]; then
echo "Auth token expired. Need to re-authenticate..."
echo "REAUTH_REQUIRED"
exit 1
elif [ "$HTTP_CODE" != "200" ]; then
echo "Failed to fetch profile (HTTP $HTTP_CODE). Check network/API status."
exit 1
fi
eval $(echo "$PROFILE" | node -e "
const d = require('fs').readFileSync(0,'utf8');
try {
const p = JSON.parse(d).profile || {};
console.log('USER_EMAIL=' + JSON.stringify(p.email || ''));
console.log('USER_NAME=' + JSON.stringify(p.name || ''));
} catch(e) { console.log('USER_EMAIL=\"\"'); console.log('USER_NAME=\"\"'); }
")
echo "Authenticated as: $USER_EMAIL ($USER_NAME)"REAUTH_REQUIREDcurl -s -H "x-auth-token: ${AUTH_TOKEN}" \
"https://admin.hlx.page/config/${ORG}/sites/${SITE}.json"| Permission | Required Role |
|---|---|
| Preview | |
| Publish to live | |
| Unpublish | |
| Code sync | |
| Config read | |
| Config write | |
| Snapshot manage | |
email~/.aem/ops-config.jsonresources/config.md| User Intent | Resource Module |
|---|---|
| preview, publish, unpublish, status, delete preview | |
| cache, purge, clear cache, invalidate | |
| sync code, deploy code, update code | |
| reindex, index, remove from index, search | |
| sitemap, generate sitemap | |
| snapshot, staged release, bundle | |
| logs, audit, activity | |
| user, access, permission, who am i, add user, remove user | |
| job, bulk operation, stop job | |
| site, branch, switch, list sites | |
| org config, site config, robots.txt | |
| secret, secrets, create secret, delete secret | |
| API key, apikey, create key, revoke key | |
| token, tokens, access token | |
| profile config, profile settings | |
| index config, helix-index, search config | |
| sitemap config, helix-sitemap, sitemap rules | |
| version, versions, history, rollback, restore | |
| pages, list pages, indexed pages, all pages | |
| da, da list, da source, da copy, da move, da delete, da config, da versions | |
| destructive operation, confirmation required | |
| sensitive endpoint (emails, credentials, API keys) | |
resources/code.mdresources/security.md| HTTP Response | Meaning | Required Action |
|---|---|---|
| 200/201 | Success | Display result with full URLs ( |
| 202 | Async job started | Report job name; instruct: |
| 204 | Success (no body) | Confirm: "{action} completed for {path}" |
| 4xx/5xx | Error | Show API error verbatim, then suggest fix per |
# Pattern: https://{ref}--{site}--{org}.aem.page{path}
URL="$USER_INPUT"
if echo "$URL" | grep -q '\.aem\.page\|\.aem\.live'; then
DOMAIN=$(echo "$URL" | cut -d'/' -f3)
HOST_PART=$(echo "$DOMAIN" | cut -d'.' -f1)
REF=$(echo "$HOST_PART" | awk -F'--' '{print $1}')
ORG=$(echo "$HOST_PART" | awk -F'--' '{print $NF}')
SITE=$(echo "$HOST_PART" | awk -F'--' '{
r=""; for(i=2;i<NF;i++) r=(r==""?"":r"--")$i; print r
}')
URL_PATH=$(echo "$URL" | sed 's|https://[^/]*||')
URL_PATH=${URL_PATH:-/}
echo "Parsed from URL: org=$ORG site=$SITE ref=$REF path=$URL_PATH"
fiuat--hmns-uat-kw--alshaya-axp.aem.pageref=uatsite=hmns-uat-kworg=alshaya-axpaccess.admin.roleadminauthorpublishdevelopbasic_authorbasic_publishconfigconfig_adminhelpwhat can you do?/ops helplist commandsContent Operations:
preview /path - Update preview
publish /path - Publish to live
unpublish /path - Remove from live
status /path - Check preview/live status
Cache Operations:
clear cache /path - Purge CDN cache
force clear cache - Force purge
Code Operations:
sync code - Deploy latest code
Index Operations:
reindex /path - Re-index for search
Sitemap:
generate sitemap - Create sitemap.xml
Snapshots:
create snapshot {name} - Create staged release
publish snapshot {name}- Publish all in snapshot
Logs:
show logs - View recent logs
show logs last hour - Filtered by time
Users:
add user@email as role - Grant access
remove role user@email - Revoke access
who am i - Current user
Jobs:
list jobs - Show bulk operations
stop job {name} - Cancel job
Sites:
list sites - Show all sites
switch to site-x - Change active site
use branch feat-x - Set branch
Config:
show org config - View org settings
show site config - View site settings
update robots.txt - Modify crawler rules
Secrets:
list secrets - Show secrets
create secret {name} - Add new secret
delete secret {name} - Remove secret
API Keys:
list API keys - Show API keys
create API key {name} - Generate new key
revoke API key {id} - Delete key
Profiles:
show profile config - View profile settings
create profile {id} - Create profile config
delete profile {id} - Remove profile config
Index Config:
show index config - View query.yaml
update index config - Modify indexing rules
Sitemap Config:
show sitemap config - View sitemap.yaml
update sitemap config - Modify sitemap rules
Versioning:
list versions - Show config history
restore version {id} - Rollback to version
Pages:
list pages - Show all indexed pages
list pages /blog - Filter by path prefix
Document Authoring (DA):
da auth - Authenticate with DA
da list - List DA organizations
da list /path - List files in DA path
da source /path - Get file content from DA
da copy /src to /dest - Copy file/folder in DA
da move /src to /dest - Move/rename in DA
da delete /path - Delete from DA
da upload /path - Upload content to DA
da upload media /path - Upload image/media to DA
da config - View DA site config
da update config - Update DA site config
da versions /path - List file versions
da create version - Create labeled version snapshot
da restore version X - Restore a previous version
da preview /path - Preview DA content
da publish /path - Publish DA content