Agent skill

Ops

by adobe in adobe/skills

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…

Apache-2.0Auto-check: notes

Install Ops

skills CLI
$ npx skills add adobe/skills --skill ops -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install adobe/skills ops --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/aem/project-management/skills/ops .claude/skills/ops && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ops
GitHub stars
195
Token cost
~4k tokens
SKILL.md length
1,017 words
Files
29
Skills in repo
105
Repo updated
First seen
Licence
Apache-2.0

At a glance

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…

  • Works in 5 steps: Get Organization and Site (REQUIRED FIRST) → Authenticate (REQUIRED) → Load Full Configuration and Validate Role → …
  • Any Edge Delivery Services administrative task
  • SKILL.md covers Quick Reference, Communication Guidelines, Welcome Message and Cross-Platform Notes, plus 4 more sections
  • Calls node, curl and git; reaches main--mysite--myorg.aem.page and admin.hlx.page; needs AUTH_TOKEN

What it does

Ops is an agent skill from adobe/skills. 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.

Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 29 other files (for example `.releaserc.json`, `CHANGELOG.md` and `README.md`).

It works with Adobe Experience Manager. The repository describes itself as: Adobe Skills for Agents. The licence is Apache-2.0.

When your agent uses it

  • Any Edge Delivery Services administrative task

Example prompts

  • “/ops”

Requirements

  • A credential in AUTH_TOKEN
  • Pre-approved tools (allowed-tools): Read, Write, Edit, Bash, Skill

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Get Organization and Site (REQUIRED FIRST)
  2. Authenticate (REQUIRED)
  3. Load Full Configuration and Validate Role
  4. Route by Intent
  5. Read Resource and Execute

What it can do on your machine

Read from SKILL.md and the folder at commit cbc9952. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Bash
    • Skill

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node
    • curl
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • main--mysite--myorg.aem.page
    • admin.hlx.page

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • AUTH_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ops loads about 4k tokens when it runs. Until then it costs about 125 tokens; SKILL.md has 1,017 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~125
When it runs · the whole SKILL.md, loaded when a task matches
~4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Edit, Bash, Skill

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from adobe/skills at commit cbc9952, republished under its Apache-2.0 licence (© adobe). 1,017 words, ~3,963 tokens.

Download SKILL.mdSave it as .claude/skills/ops/SKILL.md (or your agent's skills folder). This skill also uses 28 other files; get the full folder from GitHub.
name
ops
description
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.
allowed-tools
Read, Write, Edit, Bash, Skill
license
Apache-2.0
metadata.version
1.0.0

Edge Delivery Services Admin Operations

Execute admin operations on AEM Edge Delivery Services projects using natural language commands.

Quick Reference

CategoryExamples
Contentpreview /path, publish /path, unpublish /path, status /path
Cacheclear cache /path, force clear cache
Codesync code, deploy code
Indexreindex /path, remove from index
Sitemapgenerate sitemap
Snapshotscreate snapshot X, publish snapshot X, approve snapshot X
Logsshow logs, show logs last hour
Usersadd user@email as author/publish/develop, remove admin user@email, who am i
Jobslist jobs, job status X, stop job X
Siteslist sites, switch to site-X, use branch feature-X
Configshow org config, show site config, update robots.txt
Secretslist secrets, create secret, delete secret
API Keyslist API keys, create API key, revoke API key
Tokenslist tokens, create token, revoke token
Profilesshow profile config, create profile, delete profile
Index Configshow index config, update index config (query.yaml)
Sitemap Configshow sitemap config, update sitemap config (sitemap.yaml)
Versioninglist versions, restore version, rollback config
Pageslist 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

Communication Guidelines

  • NEVER use "EDS" as an acronym for Edge Delivery Services in any responses
  • Always use the full name "Edge Delivery Services" or "AEM Edge Delivery Services"
  • Show clear, actionable error messages when operations fail
  • Confirm destructive operations before executing — see resources/security.md

Welcome Message

If the user invokes the skill without a specific command (e.g., just /ops or "help me with ops"), show:

Edge 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?

Cross-Platform Notes

Shell commands use POSIX-compatible syntax (works on macOS/Linux). On Windows, Git Bash or WSL works as-is. The agent should adapt syntax to the user's environment.


Intent Router

Step 0: Get Organization and Site (REQUIRED FIRST)

Check ~/.aem/ops-config.json for previously stored org and site:

bash
eval $(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}"

If both ORG and SITE are set, confirm with the user:

"Previously used: org={ORG}, site={SITE}. Do you want to continue with these? If not, provide a different site URL (e.g., https://main--mysite--myorg.aem.page/)."

  • If user confirms → proceed
  • If user provides a URL → parse org and site from it, save the new values

If ORG or SITE is empty, ask:

"Enter the site preview/live URL for which you want to perform ops (e.g., https://main--mysite--myorg.aem.page/)."

Parse org and site from the URL:

bash
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

If the user provides something other than a valid .aem.page or .aem.live URL, ask again.

Save org and site:

bash
mkdir -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));
"

Only use org/site from ~/.aem/ops-config.json or direct user input. Never infer from git remote, fstab.yaml, or folder/repo names.

Do NOT proceed until both org and site are confirmed.

Step 1: Authenticate (REQUIRED)

Before ANY API call, check if auth token exists:

bash
AUTH_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}"

If AUTH_TOKEN is empty, invoke the auth skill before proceeding:

Skill({ skill: "aem-project-management:auth" })

Use -H "x-auth-token: ${AUTH_TOKEN}" header for all admin.hlx.page API calls.

For sensitive endpoints and destructive operations, read resources/security.md and resources/sensitive.md before proceeding.

Step 2: Load Full Configuration and Validate Role
bash
eval $(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}"

Fetch profile to verify auth and record user identity:

bash
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)"

If REAUTH_REQUIRED, invoke the auth skill and retry.

To determine user role on the site, check the site access config:

bash
curl -s -H "x-auth-token: ${AUTH_TOKEN}" \
  "https://admin.hlx.page/config/${ORG}/sites/${SITE}.json"

If an operation returns 403, inform the user which role is required:

PermissionRequired Role
Previewbasic_author, author, publish, or admin
Publish to livebasic_publish, publish, or admin
Unpublishpublish or admin
Code syncdevelop or admin
Config readconfig, config_admin, or admin
Config writeconfig_admin or admin
Snapshot manageauthor, publish, or admin

Save email to ~/.aem/ops-config.json for future use.

Read resources/config.md if site or other values are missing.

Show full SKILL.md (428 more words)Show less
Step 3: Route by Intent
User IntentResource Module
preview, publish, unpublish, status, delete previewresources/content.md
cache, purge, clear cache, invalidateresources/cache.md
sync code, deploy code, update coderesources/code.md
reindex, index, remove from index, searchresources/index.md
sitemap, generate sitemapresources/sitemap.md
snapshot, staged release, bundleresources/snapshots.md
logs, audit, activityresources/logs.md
user, access, permission, who am i, add user, remove userresources/users.md
job, bulk operation, stop jobresources/jobs.md
site, branch, switch, list sitesresources/sites.md
org config, site config, robots.txtresources/config-api.md
secret, secrets, create secret, delete secretresources/secrets.md
API key, apikey, create key, revoke keyresources/apikeys.md
token, tokens, access tokenresources/tokens.md
profile config, profile settingsresources/profiles.md
index config, helix-index, search configresources/index-config.md
sitemap config, helix-sitemap, sitemap rulesresources/sitemap-config.md
version, versions, history, rollback, restoreresources/versioning.md
pages, list pages, indexed pages, all pagesresources/pages.md
da, da list, da source, da copy, da move, da delete, da config, da versionsresources/da.md
destructive operation, confirmation requiredresources/security.md
sensitive endpoint (emails, credentials, API keys)resources/sensitive.md
Step 4: Read Resource and Execute
  1. Read the appropriate resource file from resources/
  2. Follow instructions in that resource
  3. For config updates: always GET current config first and show it to the user before modifying
  4. For code sync: always check repoless status before syncing (see code.md)
  5. For destructive operations: read resources/security.md and follow the Confirmation Protocol — no exceptions (state action, explain impact, ask "yes/no", only execute after "yes")
  6. Execute the API call
  7. Handle response per completion standards below
Completion Standards
HTTP ResponseMeaningRequired Action
200/201SuccessDisplay result with full URLs (https://{ref}--{site}--{org}.aem.page{path})
202Async job startedReport job name; instruct: check job status {jobName} to track progress
204Success (no body)Confirm: "{action} completed for {path}"
4xx/5xxErrorShow API error verbatim, then suggest fix per resources/errors.md

Before reporting success:

  • For content operations: include both preview and live URLs where applicable
  • For bulk operations: never say "published" or "previewed" — say "job started" until job completes
  • For destructive operations: confirm what was removed and what still exists

URL Parsing Helper

If user provides an AEM URL instead of separate org/site/path values:

bash
# 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"
fi

Examples: uat--hmns-uat-kw--alshaya-axp.aem.page → ref=uat, site=hmns-uat-kw, org=alshaya-axp.


Prerequisites

  1. Onboarded to Admin Service — Project must have admin.hlx.page access
  2. User has an account — Required for authentication (supports federated login)
  3. User has a site role — Roles defined in site configuration (access.admin.role). Eight roles: admin, author, publish, develop, basic_author, basic_publish, config, config_admin. If the user lacks a role, the API returns 403.
  4. Network access — Can reach admin.hlx.page

Help Response

When the user wants the command list (triggers: help, what can you do?, /ops help, list commands):

Content 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

© adobe, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 28 other files in plugins/aem/project-management/skills/ops of adobe/skills.

  • SKILL.md
  • .releaserc.json
  • CHANGELOG.md
  • README.md
  • package.json
  • resources/apikeys.md
  • resources/cache.md
  • resources/code.md
  • resources/config-api.md
  • resources/config.md
  • resources/content.md
  • resources/da.md
  • resources/errors.md
  • resources/index-config.md
  • resources/index.md
  • resources/jobs.md
  • resources/logs.md
  • resources/pages.md
  • resources/profiles.md
  • resources/secrets.md
  • … and 9 more

Open the folder on GitHubat commit cbc9952

Compare with similar skills

Ops next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ops compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ops this skilladobe/skills195—~4kAutomated safety check: NotesApache-2.0
Sanity Migrationsanity-io/agent-toolkit187—~1.4kAutomated safety check: PassMIT
Content Management Systemsgithub/awesome-copilot40k1 repos~1.3kAutomated safety check: PassMIT
App Builder UI ScaffolderNeverSight/learn-skills.dev2161 repos~2.2kAutomated safety check: PassApache-2.0
Authoring Analysismajiayu000/claude-skill-registry6662 repos~3.1kAutomated safety check: PassMIT
Block Inventorymajiayu000/claude-skill-registry6661 repos~2.1kAutomated safety check: PassMIT

Similar skills

  • Sanity Migration

    sanity-io/agent-toolkit

    Official

    Plans, implements, and reviews migrations from other CMSes and content systems into Sanity.

    187 GitHub stars~1.4k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Content Management Systems

    github/awesome-copilot

    Official

    Workflow for building and modifying content management systems across WordPress, Shopify, Wix, Squarespace, Drupal, WooCommerce, Joomla, HubSpot CMS Hub, Webflow, Adobe Experience Manager, and…

    40k GitHub starsUsed in 1 repo~1.3k tokens
    Sales & SupportAuto-check passed
  • App Builder UI Scaffolder

    NeverSight/learn-skills.dev

    Generates React Spectrum UI code for Adobe Experience Cloud Shell apps and AEM UI Extensions from annotated patterns.

    216 GitHub starsUsed in 1 repo~2.2k tokens
    Frontend & DesignAuto-check passed
  • Authoring Analysis

    majiayu000/claude-skill-registry

    Analyze content sequences and determine authoring approach (default content vs blocks).

    666 GitHub starsUsed in 2 repos~3.1k tokens
    Auto-check passed
  • Block Inventory

    majiayu000/claude-skill-registry

    Survey available blocks from local AEM Edge Delivery Services project and Block Collection to understand the block palette available for authoring.

    666 GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • Identify Page Structure

    majiayu000/claude-skill-registry

    Identify section boundaries and content sequences within a scraped webpage for AEM Edge Delivery Services import.

    666 GitHub starsUsed in 1 repo~1.5k tokens
    Auto-check passed

More from adobe/skills

All 105 skills in this repo
  • Scaffolds, implements, deploys and debugs Adobe Runtime actions in App Builder projects, with templates for webhooks, events, database CRUD, sequences and Asset Compute workers.

    195 GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Launches Chrome with an unpacked extension over CDP, opens its sidepanel, popup or options page, and hands over to cdp-connect for clicks, typing and screenshots.

    195 GitHub stars~952 tokensUpdated today
    Auto-check passed
  • Extracts icons, metadata, text, forms, videos and social links from any web page with playwright-cli, with SVG icon classification and cleanup.

    195 GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Page Langs

    adobe/skills

    Detect all languages used on a webpage — both declared (html@lang, hreflang alternate links, nested lang= attributes, meta content-language) and actually present in the body text (Google CLD3 via…

    195 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Page Prep

    adobe/skills

    Prepare any webpage for clean interaction by detecting and removing disruptive overlays (cookie banners, GDPR consent, modals, popups, newsletter signups, paywalls, login walls).

    195 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Page Reduce

    adobe/skills

    Reduce a webpage to a structural skeleton with semantic tokens.

    195 GitHub stars~1.9k tokensUpdated today
    Auto-check passed

Questions about Ops

What does Ops do?

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…. Ops is an agent skill from adobe/skills. 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.

When should I use Ops?

Ops fits situations like: any Edge Delivery Services administrative task.

How do I install Ops in Claude Code?

Run `npx skills add adobe/skills --skill ops -a claude-code`. Or copy the skill folder (plugins/aem/project-management/skills/ops in adobe/skills) into .claude/skills/ops in your project. Claude Code loads it when a task matches its description.

How do I install Ops in Codex?

Run `npx skills add adobe/skills --skill ops -a codex`. Or copy the skill folder (plugins/aem/project-management/skills/ops in adobe/skills) into .agents/skills/ops in your project. Codex loads it when a task matches its description.

Can I use Ops in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add adobe/skills --skill ops -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ops, .gemini/skills/ops, .github/skills/ops and .opencode/skills/ops in your project.

What does Ops need to run?

Going by SKILL.md and its folder, Ops needs the command-line tools its instructions call (node, curl and git) and credentials named AUTH_TOKEN. Our summary lists: A credential in AUTH_TOKEN. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash, Skill.

Does Ops access the network?

SKILL.md names 2 domains. In commands or code: main--mysite--myorg.aem.page and admin.hlx.page; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Ops safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Ops use?

Ops is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ops use?

About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Ops?

Skills that share tags, products or a category with Ops: Sanity Migration (sanity-io/agent-toolkit, 187 stars), Content Management Systems (github/awesome-copilot, 40k stars), App Builder UI Scaffolder (NeverSight/learn-skills.dev, 216 stars) and Authoring Analysis (majiayu000/claude-skill-registry, 666 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ops?

adobe (a GitHub organization) maintains it in adobe/skills, which has 195 GitHub stars. The repository holds 105 skills in this directory. The repository was last updated on October 6, 2026.

Source: adobe/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.