Feat(admin-api): add Admin API skill for AEM Edge Delivery Services#86
Open
mkbansal1 wants to merge 12 commits intoadobe:mainfrom
Open
Feat(admin-api): add Admin API skill for AEM Edge Delivery Services#86mkbansal1 wants to merge 12 commits intoadobe:mainfrom
mkbansal1 wants to merge 12 commits intoadobe:mainfrom
Conversation
…min operations Introduces a new skill that enables natural language execution of AEM Edge Delivery Services admin tasks: content preview/publish, cache management, code sync, indexing, user management, logs, jobs, config, secrets, and more. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…perations (GET and POST)
0c98c51 to
1b48cb0
Compare
- Use IMS Bearer token (authorization: Bearer + x-content-source-authorization) for write ops: preview, publish, unpublish, cache purge, code sync - Use admin JWT (authorization: token) for read ops: status checks, job queries, index reads - Extract IMS token from admin JWT payload as best-effort fallback - Document DA (markup mountpoint) bulk operation limitation — wildcard paths not supported; explicit paths required - Document bulk publish wildcard restriction (all sites, security policy) - Fix code bus wildcard sync URL format Tested across SharePoint and DA sites — all 18 operations passing. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…sing - Remove duplicated config loading block from SKILL.md Step 2; delegate entirely to resources/config.md - Add IMS_TOKEN to config.md Load Configuration block (was only in SKILL.md) - Add "Parse from AEM URL" section to config.md with Python-based parser that reliably handles hyphenated ref/site/org names (e.g. feature-x, hmns-uat-qa-da) — replaces fragile macOS BSD sed approach - SKILL.md Step 2 is now a 3-line reference; all config logic in one place Tested: URL parsing + status/preview/publish across SharePoint and DA sites. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… gap fixes Response handler (Step 4): - Add 200/204/202 success cases previously undocumented - 202 now instructs user to track with job name explicitly - 401 gives precise DevTools instruction for IMS token retrieval - Remove duplicate standalone Error Handling section Intent router gaps (Point 3): - Add bulk status, force purge, index status, job details to router table - Content operations: bulk status patterns - Cache operations: force/full purge patterns - Index operations: index status patterns - Job management: job details and check job patterns Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Added post-curl recommended next actions to all 20 ops resource files covering ~150 operations across content, cache, jobs, index, code, config-api, apikeys, secrets, tokens, users, profiles, sites, snapshots, versioning, logs, sitemap, and index-config modules - Fixed misplaced pre-curl recommendation blocks (moved to correct post-curl position in previous section) across apikeys, secrets, config-api, logs, profiles, snapshots, tokens, users, versioning, and sites files - Repaired broken ## Natural Language Patterns headings in sitemap.md, users.md, and sites.md caused by mid-heading insertion - Added recommendation format guidelines to SKILL.md — each command in its own fenced code block for one-click copy button support - Recommendations follow professional phrasing (no rhetorical questions), use relative paths only, and provide 2-3 focused contextual suggestions per operation Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…keys
Fixes discovered by live testing against alshaya-axp org:
config-api.md:
- Site config endpoint: /config/{org}/{site}.json → /config/{org}/sites/{site}.json
- Robots.txt endpoint: /config/{org}/{site}.json/robots.txt → /config/{org}/sites/{site}/robots.txt
- Applied across API reference table and all 6 curl commands (Read, Update,
Create, Delete site config + Read, Update robots.txt)
users.md:
- List Users: added smart fallback script — tries site access.json first,
falls back to org config users[] when access.json returns 404 (common in
repoless orgs that manage access centrally)
- List Org Users: /config/{org}/users returns 400 — reads from
/config/{org}.json users[] array instead; updated API reference table
- Added note explaining org-level user storage pattern
apikeys.md:
- List Org API Keys: /config/{org}/apikeys returns 400 — reads from
/config/{org}.json apiKeys{} map instead; replaced curl with node script
that parses and formats key metadata
- Updated API reference table to reflect actual endpoint
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Closes the polish gap identified in the ops vs admin-api comparison — every resource file now opens with a contextual "When to Use" section so users and the skill router can quickly determine the right resource for their intent without reading through the full API reference. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Each resource file now ends with a ## Success Criteria section — a 3–5 point checklist that tells the skill what it must verify and communicate before calling an operation done. Covers HTTP status confirmation, URL output, destructive-op guards, fallback behaviour, and recommended follow-up steps. Closes the final polish gap identified in the ops vs admin-api comparison. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Success messages now show the constructed preview or live URL directly so users can click or copy without mentally assembling it. Also upgrades the Check Status output to a layered table with ✅ indicators and inline commands in the diagnosis rows. Fixes branch URL typo (.aem.live → .aem.page — branches are preview-only). Applies to content.md, sitemap.md, and snapshots.md. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds a new
admin-apiskill to theproject-managementplugin that enablesnatural language access to the AEM Edge Delivery Services Admin API
(
https://admin.hlx.page).The skill covers the full content lifecycle — preview, publish, cache, indexing,
and code deployments — through plain English commands, without requiring developers
or content teams to memorise API endpoints or write curl commands manually.
Operations supported:
/*)/*) with branch override supportSkill architecture:
SKILL.md) routes to 6 focused resource filesauthToken(admin JWT) for reads;imsToken(Adobe IMS Bearer) for writes — wired to the existingproject-management:authsub-skillRelated Issue
No existing issue — proposing as a new skill contribution per the contribution guidelines.
Motivation and Context
EDS Admin API operations (preview, publish, cache purge, etc.) are frequent,
repetitive tasks for both developers and content teams. The current workflow
requires knowing the exact API endpoint structure, constructing curl commands,
and handling auth headers manually.
This skill reduces that friction to a single natural language command (e.g.
publish /en/homepage,bulk preview /en/campaign/,why isn't my page updating?),making Admin API access practical for daily use without prior API knowledge.
Tested on a production EDS project with 600+ sites across SharePoint and DA
content sources.
How Has This Been Tested?
Tested live against a production EDS project (
uatenvironment, SharePoint + DA sources):/en/help-center/*) — verified HTTP 202 async job, job details showing per-path 200/304 results/*) on named branch — verified HTTP 202 async job and per-file sync resultsquery-index.jsonpreview,publish,index, andcodetopicsproject-management:authEnvironment: macOS, Claude Code CLI, AEM EDS (SharePoint + DA authoring sources)
Screenshots (if appropriate):
Skill is CLI/API based; operation outputs are structured text tables in the terminal. Adding a screenshot

Types of changes
Checklist: