К основному содержанию
скилл CX Codex

handover-admin — скилл для Claude Code: установка и функции

Создаёт руководство для передачи администрирования проекта AEM Edge Delivery Services. Пригодится при онбординге нового администратора и фиксации рабочих процедур.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add adobe/skills --skill handover-admin -a claude-code
Открыть на GitHub

Что делает handover-admin

Скилл собирает сведения о сайтах через Config Service API, затем формирует административное руководство в project-guides/ADMIN-GUIDE.md. В документ попадают настройка Config Service, права доступа, операции Admin API и раздел устранения неполадок.

Перед запуском он переходит в корень репозитория и проверяет scripts/aem.js. Без проекта AEM Edge Delivery Services работа останавливается, поэтому это повод сверить структуру репозитория заранее.

Скилл берёт имя организации из .claude-plugin/project-config.json либо запрашивает его, сохраняет настройку и проверяет токен в ~/.aem/ims-token.json. При нескольких сайтах он учитывает конфигурацию без общего репозитория.

Какие задачи решает

  • подготовить руководство для нового администратора
  • собрать конфигурацию сайтов через Config Service API
  • зафиксировать права доступа и операции Admin API
  • оформить процедуру передачи AEM-проекта
  • добавить раздел устранения неполадок в админ-документацию

Примеры запросов агенту

  • Подготовь административное руководство для передачи проекта AEM Edge Delivery Services.
  • Создай admin guide для нового администратора сайта.
  • Задокументируй процедуры администрирования и настройки Config Service.

Как установить handover-admin

1Через Skills CLI (Vercel)

npx skills add adobe/skills --skill handover-admin -a claude-code

2Вручную: положить файлы

~/.claude/skills/handover-admin/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/handover-admin/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о handover-admin

Как установить handover-admin в Claude Code?

Выполните npx skills add adobe/skills --skill handover-admin -a claude-code.

Что делает handover-admin?

Скилл создаёт административное руководство для передачи проекта AEM Edge Delivery Services. Он получает контекст сайтов через Config Service API и добавляет сведения о правах, Admin API и устранении неполадок.

Что нужно handover-admin для работы?

Скиллу нужен проект AEM Edge Delivery Services с scripts/aem.js. Также он использует имя организации и проверяет токен аутентификации в ~/.aem/ims-token.json.

Исходный текст

SKILL.md · Apache-2.0
---
name: handover-admin
description: Generate comprehensive admin documentation for AEM Edge Delivery Services project handover. Use when handing over admin responsibilities, onboarding a new site administrator, or documenting admin procedures — e.g., "admin guide", "admin documentation", "admin handover".
license: Apache-2.0
allowed-tools: Read, Write, Edit, Bash, AskUserQuestion, Skill
metadata:
  version: "1.0.0"
---

# Project Handover - Admin Guide

Generate comprehensive documentation for administrators taking over an AEM Edge Delivery Services project. Produces a complete admin guide with Config Service setup, permissions, Admin API operations, and troubleshooting.

---

## Step 0: Navigate to Project Root (CONDITIONAL)

Skip if `allGuides` is set in `.claude-plugin/project-config.json` (orchestrator already validated).

```bash
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
fi
```

If `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/`.

---

## Execution Checklist

```markdown
- [ ] Phase 0: Get org name and authenticate
- [ ] Phase 1: Fetch project context from Config Service API
- [ ] Phase 2: Generate admin guide content
- [ ] Phase 3: Customize for project
- [ ] Phase 4: Convert to PDF
```

---

## Phase 0: Get Organization Name and Authenticate

### 0.1 Check for Saved Organization

```bash
cat .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) {}
"
```

### 0.2 Prompt for Organization Name (If Not Saved)

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; do not offer a skip option.

### 0.3 Save Organization Name

```bash
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
fi
```

Replace `{ORG_NAME}` with the actual organization name.

### 0.4 Check Auth Token

```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 no valid token exists, invoke the auth skill:

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

### 0.5 Verify Authentication

```bash
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) {}
")
ORG=$(cat .claude-plugin/project-config.json | node -e "
  const d = require('fs').readFileSync(0,'utf8');
  console.log(JSON.parse(d).org || '');
")
STATUS=$(curl -s -w "%{http_code}" -o /dev/null \
  -H "x-auth-token: ${AUTH_TOKEN}" \
  "https://admin.hlx.page/config/${ORG}/sites.json")
echo "Auth check: HTTP $STATUS"
```

If not 200, re-run the auth skill before proceeding.

---

## Phase 1: Gather Project Context

### 1.1 Fetch Sites via Config Service API

The Config Service API is the only reliable source for site information. Do not use `fstab.yaml`, README, or git remote URLs.

```bash
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.

### 1.2 Fetch Per-Site Config

For each site, fetch its config:

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

Extract:
- `code.owner` / `code.repo` — GitHub repository
- `content.source.url` — Content mountpath
- `content.source.type` — Content source type (markup, onedrive, google)

Multiple sites = repoless setup. Single site = standard setup.

Build context:
```
Organization: {org}
Site(s): {site1}, {site2}, ...
Setup: {repoless | standard}
Code Repo: {owner}/{repo}
Preview: https://main--{site}--{org}.aem.page/
Live: https://main--{site}--{org}.aem.live/
Login: https://admin.hlx.page/login/{org}/{site}
Config: https://admin.hlx.page/config/{org}/
```

---

## Phase 2: Generate Admin Guide

Output file: `project-guides/ADMIN-GUIDE.md` (run `mkdir -p project-guides` first).

```markdown
---
title: "[Project Name] - Admin Guide"
date: "[Full Date — e.g., February 17, 2026]"
---

# [Project Name] - Admin Guide

Complete administration guide for managing this Edge Delivery Services project.

## Quick Reference

### URLs

| Purpose | URL |
|---------|-----|
| **Login** | https://admin.hlx.page/login/{org}/{site} |
| **Config Service** | https://admin.hlx.page/config/{org}/ |
| **Preview** | https://main--{site}--{org}.aem.page/ |
| **Live** | https://main--{site}--{org}.aem.live/ |

### Sites (if multi-site/repoless)

| Site | Content Source | Preview | Live |
|------|----------------|---------|------|
| {site1} | [from site config] | https://main--{site1}--{org}.aem.page/ | https://main--{site1}--{org}.aem.live/ |

## Authentication

### Login

1. Open: https://admin.hlx.page/login/{org}/{site}
2. Sign in with your credentials

### Logout

```bash
curl -X POST -H "x-auth-token: $AUTH_TOKEN" \
  "https://admin.hlx.page/logout/{org}/{site}/main"
```

## User Management

### View Current Access

```bash
curl -H "x-auth-token: $AUTH_TOKEN" \
  "https://admin.hlx.page/config/{org}/sites/{site}/access.json"
```

### Add User

| Role | Command |
|------|---------|
| Admin | `POST /config/{org}/sites/{site}/access/admin.json` with `{"users": ["email"]}` |
| Author | `POST /config/{org}/sites/{site}/access/author.json` with `{"users": ["email"]}` |

### Remove User

```bash
curl -X DELETE -H "x-auth-token: $AUTH_TOKEN" \
  "https://admin.hlx.page/config/{org}/sites/{site}/access/admin/{email}.json"
```

## Content Operations

| Operation | Endpoint |
|-----------|----------|
| Preview page | `POST /preview/{org}/{site}/main/{path}` |
| Bulk preview | `POST /preview/{org}/{site}/main/*` |
| Publish page | `POST /live/{org}/{site}/main/{path}` |
| Bulk publish | `POST /live/{org}/{site}/main/*` |
| Unpublish | `DELETE /live/{org}/{site}/main/{path}` |
| Purge cache | `POST /cache/{org}/{site}/main/{path}` |
| Purge all | `POST /cache/{org}/{site}/main/*` |

## Code Operations

### Sync Code

```bash
curl -X POST -H "x-auth-token: $AUTH_TOKEN" \
  "https://admin.hlx.page/code/{owner}/{repo}/main"
```

## Common Tasks

| Task | Steps |
|------|-------|
| **Add new admin** | POST to `/config/{org}/sites/{site}/access/admin.json` |
| **Republish site** | POST `/preview/{org}/{site}/main/*` then `/live/{org}/{site}/main/*` |
| **Clear all cache** | POST to `/cache/{org}/{site}/main/*` |
| **Deploy code changes** | POST to `/code/{owner}/{repo}/main` |

## Troubleshooting

| Issue | Solution |
|-------|----------|
| 401 Unauthorized | Token expired — login again |
| 403 Forbidden | Insufficient permissions — check role |
| 404 Not Found | Check org/site/path spelling |
| 429 Rate Limited | Wait and retry |
| Cache not clearing | Try with `forceUpdate: true` |
| Code not syncing | Manual sync: POST to `/code/{owner}/{repo}/main` |

## Resources

| Resource | URL |
|----------|-----|
| Admin API Docs | https://www.aem.live/docs/admin.html |
| Config Service | https://www.aem.live/docs/config-service-setup |
```

---

## Phase 3: Customize for Project

Replace all placeholders with values from the Config Service API:
- `{org}` → actual organization name
- `{site}` → actual site name(s)
- `{owner}` / `{repo}` → code owner and repo from site config

If multi-site (repoless), add a section listing all sites with their preview URL, live URL, and content source.

Check for and document project-specific configurations:
- Custom headers: `/config/{org}/sites/{site}/headers.json`
- CDN configuration
- Any project-specific admin procedures

---

## Phase 4: Convert to Professional PDF

Save the completed markdown to `project-guides/ADMIN-GUIDE.md`. The file must start with YAML frontmatter:

```yaml
---
title: "[Project Name] - Admin Guide"
date: "[Full Date — e.g., February 17, 2026]"
---
```

Immediately invoke PDF conversion:

```
Skill({ skill: "aem-project-management:whitepaper", args: "project-guides/ADMIN-GUIDE.md project-guides/ADMIN-GUIDE.pdf" })
```

The whitepaper skill auto-cleans source files. Final output: `project-guides/ADMIN-GUIDE.pdf`.

Inform the user: "Admin guide complete: project-guides/ADMIN-GUIDE.pdf"

---

## Success Criteria

| 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** | Code repo info from site config API, not git remote |
| **Content** | All org/site values filled from Config Service API |
| **Content** | Login URL correct |
| **Content** | All API endpoints have correct org/site |
| **Content** | Multi-site documented (if applicable) |
| **Content** | Common tasks listed with correct paths |
| **Output** | PDF generated at `project-guides/ADMIN-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 · adobe/skills

Похожие скиллы

Всё по теме «Тексты и документация» →
google-analytics-admin-api-basics официальный google Скилл помогает настраивать аккаунты и ресурсы Google Analytics через Admin API. Пригодится, если нужно управлять аналитикой из кода. CX Codex 7 068установок shopify-polaris-admin-extensions Shopify Скилл по админ-расширениям Shopify для Claude Code. Сейчас он помечен как устаревший: вместо работы выдаёт инструкцию удалить себя и поставить shopify. CX Codex +1 9 700установок system-admin terminal-skills Скилл с командами для проверки состояния Linux-сервера: нагрузка, память, диски, службы systemd. Пригодится, когда агент разбирается с тормозящим сервером. CX Codex +1 561установок groove-admin-update andreadellacorte Тянет свежие скиллы groove и по очереди применяет миграции к локальному состоянию. Нужен, когда вышла новая версия, а конфиг и память остались на старой. CX Codex +1 528установок groove-admin-cursor-hooks andreadellacorte Ставит нативные хуки groove в .cursor/hooks.json: перезагрузка контекста после компакции, напоминания в конце дня, буфер git-коммитов и защита служебных путей. CX Codex +1 518установок scenario-admin-analytics scenario-labs Скилл отвечает на вопросы об аналитике Scenario: расход Creative Unit, популярные модели, потребление по пользователям и проектам. CX Codex +1 345установок

Из того же набора46

appbuilder-ui-scaffolder Генерирует интерфейсы на React Spectrum для Adobe Experience Cloud Shell и расширений AEM. Помогает настроить формы, таблицы данных и модальные окна. CX Codex +1 716установок handover-developer Генерирует техническую документацию для разработчиков проекта на AEM Edge Delivery Services. Анализирует архитектуру кодовой базы и создаёт гайд для онбординга. CX Codex +1 714установок appbuilder-action-scaffolder Разворачивает, настраивает и отлаживает бессерверные действия Adobe Runtime в проектах App Builder. Пригодится для вебхуков, баз данных и фоновых задач. CX Codex +1 713установок appbuilder-testing Скилл генерирует и запускает Jest-тесты для экшенов Adobe App Builder и React-компонентов, включая моки Adobe SDK. CX Codex +1 714установок handover-author Собирает документацию для контент-авторов, которые принимают проект на AEM Edge Delivery Services: блоки, шаблоны, конфигурации и публикация. CX Codex +1 711установок appbuilder-cicd-pipeline Собирает workflow-файлы GitHub Actions для сборки и деплоя проектов Adobe App Builder, плюс шаблоны для Azure DevOps и GitLab CI. CX Codex +1 710установок aem-replication Точка входа в набор скиллов по репликации AEM 6.5 LTS: настройка агентов, публикация контента, Replication API и разбор зависших очередей. CX Codex +1 564установок prototype Собирает предлагаемый редизайн страницы в один статичный HTML-файл, который можно открыть в браузере и править через чат. CX Codex +1 524установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой