Sanity Migration
sanity-io/agent-toolkit
Plans, implements, and reviews migrations from other CMSes and content systems into Sanity.
Generate comprehensive documentation for content authors taking over an AEM Edge Delivery Services project.
$ npx skills add adobe/skills --skill handover-author -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install adobe/skills handover-author --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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/handover-author .claude/skills/handover-author && rm -rf skills-srcUse ~/.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/
Install the "handover-author" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/project-management/skills/handover-author into .claude/skills/handover-author/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "handover-author", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/adobe/skills/tree/main/plugins/aem/project-management/skills/handover-authorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add adobe/skills --skill handover-author -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install adobe/skills handover-author --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/aem/project-management/skills/handover-author .agents/skills/handover-author && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "handover-author" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/project-management/skills/handover-author into .agents/skills/handover-author/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "handover-author", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add adobe/skills --skill handover-author -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install adobe/skills handover-author --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/aem/project-management/skills/handover-author .cursor/skills/handover-author && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "handover-author" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/project-management/skills/handover-author into .cursor/skills/handover-author/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "handover-author", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/adobe/skills.git --path plugins/aem/project-management/skills/handover-author--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add adobe/skills --skill handover-author -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install adobe/skills handover-author --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/aem/project-management/skills/handover-author .gemini/skills/handover-author && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "handover-author" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/project-management/skills/handover-author into .gemini/skills/handover-author/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "handover-author", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install adobe/skills handover-authorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add adobe/skills --skill handover-author -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/aem/project-management/skills/handover-author .github/skills/handover-author && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "handover-author" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/project-management/skills/handover-author into .github/skills/handover-author/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "handover-author", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add adobe/skills --skill handover-author -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install adobe/skills handover-author --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/aem/project-management/skills/handover-author .opencode/skills/handover-author && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "handover-author" agent skill from https://github.com/adobe/skills/tree/main/plugins/aem/project-management/skills/handover-author into .opencode/skills/handover-author/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "handover-author", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
handover-authorGenerate comprehensive documentation for content authors taking over an AEM Edge Delivery Services project.
Handover Author is an agent skill from adobe/skills. Generate comprehensive documentation for content authors taking over an AEM Edge Delivery Services project. Use when onboarding content authors, training content managers, or creating author-focused handover documentation — analyzes project structure and produces a complete authoring guide with blocks, templates, configurations, and publishing workflows.
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `.releaserc.json`, `CHANGELOG.md` and `package.json`).
It works with Adobe Experience Manager. The repository describes itself as: Adobe Skills for Agents. The licence is Apache-2.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cbc9952. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditBashSkillGlobGrepFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
nodecurlgitFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
da.liveadmin.hlx.pageaem.livecontent.da.livedocs.da.liveFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
AUTH_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Handover Author loads about 3.6k tokens when it runs. Until then it costs about 93 tokens; SKILL.md has 654 words of instructions outside code blocks.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Edit, Bash, Skill, Glob, GrepAutomated 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.
The full file from adobe/skills at commit cbc9952, republished under its Apache-2.0 licence (© adobe). 654 words, ~3,596 tokens.
.claude/skills/handover-author/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Generate a complete authoring guide for content authors and content managers. Analyzes the project and produces actionable documentation.
Skip if allGuides is set in .claude-plugin/project-config.json (orchestrator already validated).
ALL_GUIDES=$(cat .claude-plugin/project-config.json 2>/dev/null | node -e "
const d = require('fs').readFileSync(0,'utf8');
try { console.log(JSON.parse(d).allGuides ? 'true' : ''); } catch(e) { console.log(''); }
")
if [ -z "$ALL_GUIDES" ]; then
cd "$(git rev-parse --show-toplevel)"
ls scripts/aem.js
fiIf scripts/aem.js does not exist, tell the user this skill requires an AEM Edge Delivery Services project and stop.
All subsequent steps operate from project root. Guides are created at project-guides/.
- [ ] Phase 0: Get org name and authenticate
- [ ] Phase 1: Gather project information from Config Service API
- [ ] Phase 2: Analyze content structure
- [ ] Phase 3: Document blocks and templates
- [ ] Phase 4: Document configuration sheets
- [ ] Phase 5: Generate PDFcat .claude-plugin/project-config.json 2>/dev/null | node -e "
const d = require('fs').readFileSync(0,'utf8');
try { const o = JSON.parse(d).org; if(o) console.log('org: ' + o); } catch(e) {}
"If no org name is found, ask the user:
"What is your Config Service organization name? This is the
{org}part of your Edge Delivery Services URLs (e.g.,https://main--site--{org}.aem.page). The org name may differ from your GitHub organization."
Ask as a plain text question — not AskUserQuestion with options. Organization name is mandatory.
mkdir -p .claude-plugin
grep -qxF '.claude-plugin/' .gitignore 2>/dev/null || echo '.claude-plugin/' >> .gitignore
if [ -f .claude-plugin/project-config.json ]; then
cat .claude-plugin/project-config.json | sed 's/"org"[[:space:]]*:[[:space:]]*"[^"]*"/"org": "{ORG_NAME}"/' > /tmp/project-config.json && mv /tmp/project-config.json .claude-plugin/project-config.json
else
echo '{"org": "{ORG_NAME}"}' > .claude-plugin/project-config.json
fiReplace {ORG_NAME} with the actual organization name.
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) {}
")
if [ -z "$AUTH_TOKEN" ]; then
echo "AUTH_REQUIRED"
fiIf AUTH_REQUIRED, invoke the auth skill before proceeding:
Skill({ skill: "aem-project-management:auth" })The Config Service API is the only reliable source for site information. Do not use fstab.yaml, README, or git remote URLs.
ORG=$(cat .claude-plugin/project-config.json | node -e "
const d = require('fs').readFileSync(0,'utf8');
console.log(JSON.parse(d).org || '');
")
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) {}
")
curl -s -H "x-auth-token: ${AUTH_TOKEN}" -H "Accept: application/json" \
"https://admin.hlx.page/config/${ORG}/sites.json" > .claude-plugin/sites-config.json
node -e "
const d = require('fs').readFileSync('.claude-plugin/sites-config.json', 'utf8');
const j = JSON.parse(d);
if (!j.sites || !j.sites.length) {
console.error('No sites returned — verify org name and re-authenticate if needed');
process.exit(1);
}
console.log('Found ' + j.sites.length + ' site(s): ' + j.sites.map(s => s.name).join(', '));
"If validation fails, verify the org name is correct, re-authenticate, and retry.
Fetch per-site config for content details:
curl -s -H "x-auth-token: ${AUTH_TOKEN}" \
"https://admin.hlx.page/config/${ORG}/sites/{site-name}.json"Extract:
code.owner / code.repo — GitHub repositorycontent.source.url — Content mountpath (e.g., https://content.da.live/org/site/)content.source.type — Content source type (markup, onedrive, google)Build DA and Block Library URLs from content source:
https://da.live/#/{org}/{site}/https://da.live/#/{org}/{site}/.da/libraryMultiple sites = repoless setup. Single site = standard setup.
ls -la /en /fr /de /es /it 2>/dev/null || echo "Check DA for language folders"Record whether the project is multi-lingual and which languages are supported.
Read site config from Phase 1:
cat .claude-plugin/sites-config.jsonls nav.md footer.md 2>/dev/null || echo "Nav/footer likely in DA"Document: Navigation and footer location (DA path or local file), menu structure, mobile behavior.
ls -la templates/ 2>/dev/null && ls templates/For each template, document: name, purpose, how to apply (metadata setting).
grep -E "\.section\." styles/styles.css 2>/dev/null | head -15Document available section styles (e.g., dark, highlight, narrow) for the guide's "Available Section Styles" table.
ls blocks/Run block analysis silently. For each block determine: purpose, variants (from CSS .blockname.variant), and when authors should use it. Document all blocks so authors know what's available.
For each template found in Phase 2.2, document: name, purpose, required metadata fields, and how to apply (template: name in Metadata block).
Get the content path from the Config Service site config. Block Library URL is https://da.live/#/{content-owner}/{content-path}/.da/library — the path varies by project.
ls placeholders.json 2>/dev/nullDocument: location in DA, language sheets, key strings authors might need to update.
ls redirects.json 2>/dev/nullDocument: location in DA, format (source → destination columns), when to use.
ls metadata.json 2>/dev/nullDocument: location in DA, URL patterns, which metadata properties are set in bulk.
ls -la *.xlsx *.json 2>/dev/null | grep -v packageSave to project-guides/AUTHOR-GUIDE.md (run mkdir -p project-guides first).
---
title: "[Project Name] - Author Guide"
date: "[Full Date — e.g., February 17, 2026]"
---
# [Project Name] - Author Guide
## Quick Reference
| Resource | URL |
|----------|-----|
| Document Authoring | https://da.live/#/{content-owner}/{content-path}/ |
| Preview (per site) | https://main--{site}--{org}.aem.page/ |
| Live (per site) | https://main--{site}--{org}.aem.live/ |
| Block Library | https://da.live/#/{content-owner}/{content-path}/.da/library |
| Bulk Operations | https://da.live/apps/bulk |
(**Content path** comes from the Config Service site config — e.g., `content.da.live/org/site/` → use `org/site` for the path after `#/`. This varies by project.)
### Sites
| Site | Content Source (DA) | Preview | Live |
|------|---------------------|---------|------|
| {site1} | [from site config] | https://main--{site1}--{org}.aem.page/ | https://main--{site1}--{org}.aem.live/ |
## Getting Started
### Access Requirements
- [ ] DA access (request from admin)
- [ ] Preview/publish permissions
### Your First Page
1. Go to DA: [link]
2. Navigate to the correct folder
3. Create new document
4. Use blocks from Library sidebar
5. Add Metadata block at bottom
6. Preview → Publish
## Content Organization
### Site Structure
[Describe the folder structure in DA]
### Languages
[List supported languages if multi-lingual]
## Block Library
The Block Library is the sidebar in Document Authoring where you browse and insert blocks and templates.
| What | Details |
|------|---------|
| **Open in DA** | Use the Library icon in the DA editor sidebar, or go directly to: `https://da.live/#/{content-owner}/{content-path}/.da/library` |
| **How to use** | Click a block or template in the library to insert it at the cursor position |
## Available Blocks
| Block | Purpose | Variants | Usage |
|-------|---------|----------|-------|
| [name] | [what it's for] | [variant1, variant2] | [when to use] |
[Generate table rows for all blocks]
## Page Templates
| Template | Purpose | Required Metadata | How to Apply |
|----------|---------|-------------------|--------------|
| [name] | [what type of pages] | [key fields] | `template: [name]` in Metadata |
[Generate table rows for all templates]
## Configuration Sheets
| Sheet | Location | Purpose | When to Update |
|-------|----------|---------|----------------|
| Placeholders | `/placeholders` | Reusable text strings, translations | Changing labels, button text |
| Redirects | `/redirects` | Forward old URLs to new URLs | After deleting/moving pages |
| Bulk Metadata | `/metadata` | Apply metadata to multiple pages | Setting defaults by folder |
## Publishing Workflow
| Environment | Domain | Purpose |
|-------------|--------|---------|
| Preview | `.aem.page` | Test changes before going live |
| Live | `.aem.live` | Production site |
**Workflow:** Edit in DA → Preview → Publish → Live immediately
**Bulk:** https://da.live/apps/bulk
## Common Tasks
| Task | Steps |
|------|-------|
| **Create a Page** | Navigate to folder → New → Document → Add content → Add Metadata → Preview → Publish |
| **Edit a Page** | Open in DA → Make changes → Preview → Publish |
| **Delete a Page** | Add redirect first → Delete document → Publish redirects |
| **Update Navigation** | Edit `/nav` document → Preview → Publish |
| **Update Footer** | Edit `/footer` document → Preview → Publish |
## Sections and Section Metadata
Sections group content together. Create sections with horizontal rules (`---`).
Add styles with a Section Metadata block at the end of the section:
| Section Metadata | |
|------------------|-|
| style | [style-name] |
**Available Section Styles:**
| Style | Effect |
|-------|--------|
| [List project-specific styles] | |
## Page Metadata
| Property | Required | Purpose | Example |
|----------|----------|---------|---------|
| `title` | Yes | Page title for SEO | "About Us" |
| `description` | Yes | SEO description | "Learn about..." |
| `image` | No | Social sharing image | /images/og.jpg |
| `template` | No | Apply page template | project-article |
| [Add project-specific fields] | | | |
## Images and Media
| Method | How |
|--------|-----|
| Drag & drop | Drag images directly into DA editor |
| AEM Assets | Use Assets sidebar in DA |
Best practices: descriptive filenames, always add alt text, images auto-optimized.
## Troubleshooting
| Issue | Solution |
|-------|----------|
| Page not updating after publish | Wait 1-2 min for cache, hard refresh (Cmd+Shift+R) |
| Block not displaying correctly | Check structure matches expected format, verify variant spelling |
| Images not showing | Verify image uploaded to DA, check path is correct |
| Wrong template styling | Check `template` value in Metadata matches template name exactly |
## Resources
| Resource | URL |
|----------|-----|
| DA Documentation | https://docs.da.live/ |
| Authoring Guide | https://www.aem.live/docs/authoring |
| Placeholders Docs | https://www.aem.live/docs/placeholders |
| Redirects Docs | https://www.aem.live/docs/redirects |
## Support Contacts
[Add project-specific contacts]Save the completed markdown to project-guides/AUTHOR-GUIDE.md with YAML frontmatter (title, date using full date format e.g., "February 17, 2026"). Then immediately invoke PDF conversion:
Skill({ skill: "aem-project-management:whitepaper", args: "project-guides/AUTHOR-GUIDE.md project-guides/AUTHOR-GUIDE.pdf" })The whitepaper skill auto-cleans source files. Final output: project-guides/AUTHOR-GUIDE.pdf.
Inform the user: "Author guide complete: project-guides/AUTHOR-GUIDE.pdf"
| Category | Check |
|---|---|
| Data Source | Config Service API called (https://admin.hlx.page/config/{ORG}/sites.json) |
| Data Source | Site list from API response, not fstab.yaml or codebase analysis |
| Data Source | DA/Block Library URLs derived from Config Service content source, not assumed from code.owner/repo |
| Content | Quick Reference table with all project URLs |
| Content | All blocks documented in table format |
| Content | All templates documented with required metadata |
| Content | Configuration sheets documented |
| Content | Publishing workflow explained |
| Content | Common tasks documented |
| Content | Section/page metadata options listed |
| Content | Troubleshooting included |
| Output | PDF generated at project-guides/AUTHOR-GUIDE.pdf |
| Output | All source files cleaned up (only PDF remains) |
Communication: Never use "EDS" as an acronym — always write "Edge Delivery Services" or "AEM Edge Delivery Services" in all output and documentation.
© 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
SKILL.md and 3 other files in plugins/aem/project-management/skills/handover-author of adobe/skills.
Open the folder on GitHubat commit cbc9952
Handover Author 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Handover Author this skilladobe/skills | 195 | — | ~3.6k | Automated safety check: Notes | Apache-2.0 | |
| Sanity Migrationsanity-io/agent-toolkit | 187 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Content Management Systemsgithub/awesome-copilot | 40k | 1 repos | ~1.3k | Automated safety check: Pass | MIT | |
| App Builder UI ScaffolderNeverSight/learn-skills.dev | 216 | 1 repos | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Authoring Analysismajiayu000/claude-skill-registry | 666 | 2 repos | ~3.1k | Automated safety check: Pass | MIT | |
| Block Inventorymajiayu000/claude-skill-registry | 666 | 1 repos | ~2.1k | Automated safety check: Pass | MIT |
sanity-io/agent-toolkit
Plans, implements, and reviews migrations from other CMSes and content systems into Sanity.
github/awesome-copilot
Workflow for building and modifying content management systems across WordPress, Shopify, Wix, Squarespace, Drupal, WooCommerce, Joomla, HubSpot CMS Hub, Webflow, Adobe Experience Manager, and…
NeverSight/learn-skills.dev
Generates React Spectrum UI code for Adobe Experience Cloud Shell apps and AEM UI Extensions from annotated patterns.
majiayu000/claude-skill-registry
Analyze content sequences and determine authoring approach (default content vs blocks).
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.
majiayu000/claude-skill-registry
Identify section boundaries and content sequences within a scraped webpage for AEM Edge Delivery Services import.
adobe/skills
Scaffolds, implements, deploys and debugs Adobe Runtime actions in App Builder projects, with templates for webhooks, events, database CRUD, sequences and Asset Compute workers.
adobe/skills
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.
adobe/skills
Extracts icons, metadata, text, forms, videos and social links from any web page with playwright-cli, with SVG icon classification and cleanup.
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…
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).
adobe/skills
Reduce a webpage to a structural skeleton with semantic tokens.
Works with
Generate comprehensive documentation for content authors taking over an AEM Edge Delivery Services project. Handover Author is an agent skill from adobe/skills. Generate comprehensive documentation for content authors taking over an AEM Edge Delivery Services project.
Handover Author fits situations like: onboarding content authors; training content managers; creating author-focused handover documentation — analyzes project structure and produces a complete authoring guide with blocks; publishing workflows.
Run `npx skills add adobe/skills --skill handover-author -a claude-code`. Or copy the skill folder (plugins/aem/project-management/skills/handover-author in adobe/skills) into .claude/skills/handover-author in your project. Claude Code loads it when a task matches its description.
Run `npx skills add adobe/skills --skill handover-author -a codex`. Or copy the skill folder (plugins/aem/project-management/skills/handover-author in adobe/skills) into .agents/skills/handover-author in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add adobe/skills --skill handover-author -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/handover-author, .gemini/skills/handover-author, .github/skills/handover-author and .opencode/skills/handover-author in your project.
Going by SKILL.md and its folder, Handover Author 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, Glob, Grep.
SKILL.md names 5 domains. In commands or code: da.live, admin.hlx.page, aem.live, content.da.live and docs.da.live; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
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.
Handover Author 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.
About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Handover Author: 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.
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.