authoring

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Project Handover - Authoring

项目交接 - 内容创作

Generate a complete authoring guide for content authors and content managers. This skill analyzes the project and produces actionable documentation.
为内容作者和内容经理生成完整的创作指南。此技能会分析项目并生成可落地的文档。

When to Use This Skill

何时使用此技能

  • Onboarding content authors to a new project
  • Training content managers
  • Project handover to client authoring team
  • Creating author-focused documentation

  • 为新项目的内容作者提供入职培训
  • 培训内容经理
  • 向客户创作团队交接项目
  • 创建面向作者的文档

Step 0: Navigate to Project Root and Verify Edge Delivery Services Project (CONDITIONAL)

步骤0:导航至项目根目录并验证Edge Delivery Services项目(可选)

Skip this step if
allGuides
flag is set
(orchestrator already validated and navigated).
CRITICAL: If NOT skipped, you MUST execute the
cd
command. Do NOT use absolute paths — actually change directory.
bash
ALL_GUIDES=$(cat .claude-plugin/project-config.json 2>/dev/null | grep -o '"allGuides"[[:space:]]*:[[:space:]]*true')
if [ -z "$ALL_GUIDES" ]; then
  # Navigate to git project root (works from any subdirectory)
  cd "$(git rev-parse --show-toplevel)"
  # Verify it's an Edge Delivery Services project
  ls scripts/aem.js
fi
IMPORTANT:
  • You MUST run the
    cd
    command above using the Bash tool
  • All subsequent steps operate from project root
  • Do NOT use absolute paths to verify — actually navigate
  • Guides will be created at
    project-root/project-guides/
If NOT skipped AND
scripts/aem.js
does NOT exist
, respond:
"This skill is designed for AEM Edge Delivery Services projects. The current directory does not appear to be an Edge Delivery Services project (
scripts/aem.js
not found).
Please navigate to an Edge Delivery Services project and try again."
STOP if check fails. Otherwise proceed — you are now at project root.

如果已设置
allGuides
标志,则跳过此步骤
(编排器已验证并导航)。
重要提示:如果未跳过,必须执行
cd
命令。请勿使用绝对路径——实际切换目录。
bash
ALL_GUIDES=$(cat .claude-plugin/project-config.json 2>/dev/null | grep -o '"allGuides"[[:space:]]*:[[:space:]]*true')
if [ -z "$ALL_GUIDES" ]; then
  # 导航至Git项目根目录(从任何子目录均可生效)
  cd "$(git rev-parse --show-toplevel)"
  # 验证是否为Edge Delivery Services项目
  ls scripts/aem.js
fi
注意事项:
  • 必须使用Bash工具运行上述
    cd
    命令
  • 后续所有步骤均从项目根目录执行
  • 请勿使用绝对路径进行验证——实际导航
  • 指南将创建在
    project-root/project-guides/
    目录下
如果未跳过且
scripts/aem.js
不存在,请回复:
"此技能专为AEM Edge Delivery Services项目设计。当前目录似乎不是Edge Delivery Services项目(未找到
scripts/aem.js
)。
请导航至Edge Delivery Services项目后重试。"
如果检查失败,请停止操作。否则继续——您现在已处于项目根目录。

Communication Guidelines

沟通准则

  • NEVER use "EDS" as an acronym for Edge Delivery Services in any generated documentation or chat responses
  • Always use the full name "Edge Delivery Services" or "AEM Edge Delivery Services"
  • This applies to all output files (PDF, HTML, markdown) and all communication with the user

  • **切勿使用“EDS”**作为Edge Delivery Services的缩写,在任何生成的文档或聊天回复中均不可使用
  • 始终使用全名“Edge Delivery Services”或“AEM Edge Delivery Services”
  • 此规则适用于所有输出文件(PDF、HTML、Markdown)以及与用户的所有沟通

⚠️ CRITICAL PATH REQUIREMENT

⚠️ 关键路径要求

YOU MUST SAVE THE FILE TO THIS EXACT PATH:
project-guides/AUTHOR-GUIDE.md
BEFORE WRITING ANY FILE:
  1. First, create the directory:
    mkdir -p project-guides
  2. Then write to:
    project-guides/AUTHOR-GUIDE.md
WHY THIS MATTERS: Files must be in
project-guides/
for proper organization and PDF conversion.
WRONG:
AUTHOR-GUIDE.md
(root) ❌ WRONG:
docs/AUTHOR-GUIDE.md
WRONG:
/workspace/AUTHOR-GUIDE.md
CORRECT:
project-guides/AUTHOR-GUIDE.md

必须将文件保存至以下精确路径:
project-guides/AUTHOR-GUIDE.md
在写入任何文件之前:
  1. 首先创建目录:
    mkdir -p project-guides
  2. 然后写入至:
    project-guides/AUTHOR-GUIDE.md
为何如此重要: 文件必须位于
project-guides/
目录下,以便进行合理组织和PDF转换。
错误路径:
AUTHOR-GUIDE.md
(根目录) ❌ 错误路径:
docs/AUTHOR-GUIDE.md
错误路径:
/workspace/AUTHOR-GUIDE.md
正确路径:
project-guides/AUTHOR-GUIDE.md

Output Format

输出格式

MANDATORY OUTPUT:
project-guides/AUTHOR-GUIDE.pdf
STRICTLY FORBIDDEN:
  • ❌ Do NOT read or analyze
    fstab.yaml
    — it does NOT exist in most projects and does NOT show all sites
  • ❌ Do NOT create
    .plain.html
    files
  • ❌ Do NOT use
    convert_markdown_to_html
    tool — this converts the FULL guide to HTML with raw frontmatter visible, which is NOT what we want
  • ❌ Do NOT tell user to "convert markdown to PDF manually"
  • ❌ Do NOT save markdown to root directory or any path other than
    project-guides/
  • ❌ Do NOT say "PDF will be generated later" or "at session end" — generate it NOW
REQUIRED WORKFLOW:
  1. Run
    mkdir -p project-guides
    to ensure directory exists
  2. Generate markdown content with YAML frontmatter (title, date)
  3. Save to
    project-guides/AUTHOR-GUIDE.md
    (EXACT PATH - no exceptions)
  4. IMMEDIATELY invoke PDF conversion (see Phase 5.2)
  5. Clean up all source files (only PDF remains)
  6. Final output:
    project-guides/AUTHOR-GUIDE.pdf

强制输出:
project-guides/AUTHOR-GUIDE.pdf
严格禁止:
  • ❌ 请勿读取或分析
    fstab.yaml
    ——大多数项目中不存在该文件,且无法显示所有站点
  • ❌ 请勿创建
    .plain.html
    文件
  • ❌ 请勿使用
    convert_markdown_to_html
    工具——此工具会将完整指南转换为HTML并显示原始前置内容,这并非我们所需
  • ❌ 请勿告知用户“手动将Markdown转换为PDF”
  • ❌ 请勿将Markdown保存至根目录或
    project-guides/
    以外的任何路径
  • ❌ 请勿说“PDF将稍后生成”或“在会话结束时生成”——立即生成
必需工作流:
  1. 运行
    mkdir -p project-guides
    确保目录存在
  2. 生成带有YAML前置内容(标题、日期)的Markdown内容
  3. 保存至
    project-guides/AUTHOR-GUIDE.md
    (精确路径——无例外)
  4. 立即调用PDF转换(见阶段5.2)
  5. 清理所有源文件(仅保留PDF)
  6. 最终输出:
    project-guides/AUTHOR-GUIDE.pdf

Execution Checklist

执行清单

markdown
- [ ] Phase 1: Gather Project Information
- [ ] Phase 2: Analyze Content Structure
- [ ] Phase 3: Document Blocks and Templates
- [ ] Phase 4: Document Configuration Sheets
- [ ] Phase 5: Generate Professional PDF

markdown
- [ ] 阶段1:收集项目信息
- [ ] 阶段2:分析内容结构
- [ ] 阶段3:记录区块与模板
- [ ] 阶段4:记录配置表
- [ ] 阶段5:生成专业PDF

Phase 0: Get Organization Name (Required First)

阶段0:获取组织名称(必须首先完成)

Whenever this skill runs — whether the user triggered it directly (e.g. "generate authoring guide") or via the handover flow — you must have the Config Service organization name before doing anything else. Do not skip this phase.
无论何时运行此技能——无论是用户直接触发(例如“生成创作指南”)还是通过交接流程触发——都必须先获取Config Service组织名称,才能进行其他操作。请勿跳过此阶段。

0.1 Check for Saved Organization

0.1 检查已保存的组织信息

bash
undefined
bash
undefined

Check if org name is already saved

检查是否已保存组织名称

cat .claude-plugin/project-config.json 2>/dev/null | grep -o '"org"[[:space:]]:[[:space:]]"[^"]*"' | head -1
undefined
cat .claude-plugin/project-config.json 2>/dev/null | grep -o '"org"[[:space:]]:[[:space:]]"[^"]*"' | head -1
undefined

0.2 Prompt for Organization Name (If Not Saved)

0.2 提示输入组织名称(如果未保存)

If no org name is saved, you MUST pause and ask the user directly:
"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."
IMPORTANT RULES:
  • DO NOT use
    AskUserQuestion
    with predefined options
    — ask as a plain text question
  • Organization name is MANDATORY — do not offer a "skip" option
  • Wait for user to type the org name before proceeding
  • If user doesn't provide a valid org name, ask again
如果未保存组织名称,必须暂停并直接询问用户:
"您的Config Service组织名称是什么?这是您Edge Delivery Services URL中的
{org}
部分(例如
https://main--site--{org}.aem.page
)。组织名称可能与您的GitHub组织不同。"
重要规则:
  • 请勿使用带有预定义选项的
    AskUserQuestion
    ——以纯文本形式提问
  • 组织名称是必填项——不提供“跳过”选项
  • 等待用户输入组织名称后再继续
  • 如果用户未提供有效的组织名称,请再次询问

0.3 Save Organization Name

0.3 保存组织名称

Once you have the org name (either from saved config or user input), save it for future use:
bash
undefined
一旦获取组织名称(无论是从已保存的配置还是用户输入),将其保存以备将来使用:
bash
undefined

Create config directory if needed

必要时创建配置目录

mkdir -p .claude-plugin
mkdir -p .claude-plugin

Ensure .claude-plugin is in .gitignore (contains auth tokens)

确保.claude-plugin在.gitignore中(包含身份验证令牌)

grep -qxF '.claude-plugin/' .gitignore 2>/dev/null || echo '.claude-plugin/' >> .gitignore
grep -qxF '.claude-plugin/' .gitignore 2>/dev/null || echo '.claude-plugin/' >> .gitignore

Save org name to config file (create or update)

将组织名称保存到配置文件(创建或更新)

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 provided by the user.

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

将`{ORG_NAME}`替换为用户提供的实际组织名称。

---

Phase 1: Gather Project Information

阶段1:收集项目信息

1.1 Fetch Sites and Code Repo via Config Service API

1.1 通过Config Service API获取站点和代码仓库

⚠️ MANDATORY DATA SOURCE — NO ALTERNATIVES ALLOWED
You MUST call the Config Service API. This is the ONLY acceptable source for site information.
❌ PROHIBITED APPROACHES (will produce incorrect results):
  • Analyzing
    fstab.yaml
    — does NOT show all sites in repoless setups
  • Reading
    README.md
    — may be outdated or incomplete
  • Inferring from codebase structure — misses CDN configs and additional sites
  • Using git remote URLs — org name may differ from Config Service org
  • Making assumptions based on project folder names
✅ REQUIRED: Execute and save response:
bash
ORG=$(cat .claude-plugin/project-config.json | grep -o '"org"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/"org"[[:space:]]*:[[:space:]]*"//' | sed 's/"$//')
⚠️ 强制数据源——不允许替代方案
必须调用Config Service API。这是获取站点信息的唯一可接受来源。
❌ 禁止方法(会产生错误结果):
  • 分析
    fstab.yaml
    ——无法显示无仓库设置中的所有站点
  • 阅读
    README.md
    ——可能过时或不完整
  • 从代码库结构推断——会遗漏CDN配置和其他站点
  • 使用Git远程URL——组织名称可能与Config Service组织不同
  • 根据项目文件夹名称做出假设
✅ 必需操作:执行并保存响应:
bash
ORG=$(cat .claude-plugin/project-config.json | grep -o '"org"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/"org"[[:space:]]*:[[:space:]]*"//' | sed 's/"$//')

Save response to file - Phase 2 depends on this file

将响应保存到文件——阶段2依赖此文件

curl -s -H "Accept: application/json" "https://admin.hlx.page/config/${ORG}/sites.json" > .claude-plugin/sites-config.json

**📁 REQUIRED ARTIFACT:** `.claude-plugin/sites-config.json`

**API Reference:** https://www.aem.live/docs/admin.html#tag/siteConfig/operation/getConfigSites

---

The response is a JSON object with a `sites` array (each entry has a `name` field). Extract site names and construct per-site URLs:
- **Preview:** `https://main--{site-name}--{org}.aem.page/`
- **Live:** `https://main--{site-name}--{org}.aem.live/`

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

**Then fetch individual site config for code and content details:**

```bash
AUTH_TOKEN=$(cat .claude-plugin/project-config.json | grep -o '"authToken"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/"authToken"[[:space:]]*:[[:space:]]*"//' | sed 's/"$//')
curl -s -H "x-auth-token: ${AUTH_TOKEN}" "https://admin.hlx.page/config/${ORG}/sites/{site-name}.json"
Example response:
json
{
  "code": {
    "owner": "github-owner",
    "repo": "repo-name",
    "source": { "type": "github", "url": "https://github.com/owner/repo" }
  },
  "content": {
    "source": {
      "url": "https://content.da.live/org-name/site-name/",
      "type": "markup"
    },
    "contentBusId": "..."
  }
}
Extract from response:
  • code.owner
    /
    code.repo
    — GitHub repository
  • content.source.url
    — Content mountpath (e.g.,
    https://content.da.live/org/site/
    )
  • content.source.type
    — Content source type (markup, onedrive, google)
Build URLs from content source:
  • DA URL:
    https://da.live/#/{org}/{site}/
    (derived from
    content.source.url
    )
  • Block Library:
    https://da.live/#/{org}/{site}/.da/library
⚠️ Do NOT use
fstab.yaml
— use Config Service API instead.
curl -s -H "Accept: application/json" "https://admin.hlx.page/config/${ORG}/sites.json" > .claude-plugin/sites-config.json

**📁 必需产物:** `.claude-plugin/sites-config.json`

**API参考:** https://www.aem.live/docs/admin.html#tag/siteConfig/operation/getConfigSites

---

响应是一个包含`sites`数组的JSON对象(每个条目都有`name`字段)。提取站点名称并构建每个站点的URL:
- **预览环境:** `https://main--{site-name}--{org}.aem.page/`
- **生产环境:** `https://main--{site-name}--{org}.aem.live/`

多个站点 = **无仓库**设置。单个站点 = **标准**设置。

**然后获取单个站点的配置以获取代码和内容详情:**

```bash
AUTH_TOKEN=$(cat .claude-plugin/project-config.json | grep -o '"authToken"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/"authToken"[[:space:]]*:[[:space:]]*"//' | sed 's/"$//')
curl -s -H "x-auth-token: ${AUTH_TOKEN}" "https://admin.hlx.page/config/${ORG}/sites/{site-name}.json"
示例响应:
json
{
  "code": {
    "owner": "github-owner",
    "repo": "repo-name",
    "source": { "type": "github", "url": "https://github.com/owner/repo" }
  },
  "content": {
    "source": {
      "url": "https://content.da.live/org-name/site-name/",
      "type": "markup"
    },
    "contentBusId": "..."
  }
}
从响应中提取:
  • code.owner
    /
    code.repo
    —— GitHub仓库
  • content.source.url
    —— 内容挂载路径(例如
    https://content.da.live/org/site/
  • content.source.type
    —— 内容源类型(markup, onedrive, google)
从内容源构建URL:
  • DA URL:
    https://da.live/#/{org}/{site}/
    (从
    content.source.url
    派生)
  • 区块库:
    https://da.live/#/{org}/{site}/.da/library
⚠️ 请勿使用
fstab.yaml
——请改用Config Service API。

1.2 Check Multi-Language Support

1.2 检查多语言支持

bash
undefined
bash
undefined

Check for language folders in content structure

检查内容结构中的语言文件夹

ls -la /en /fr /de /es /it 2>/dev/null || echo "Check DA for language folders"

**Output:** Record whether project is multi-lingual and which languages are supported.

---
ls -la /en /fr /de /es /it 2>/dev/null || echo "在DA中检查语言文件夹"

**输出:** 记录项目是否支持多语言以及支持哪些语言。

---

Phase 2: Analyze Content Structure

阶段2:分析内容结构

Read site config from Phase 1:
bash
cat .claude-plugin/sites-config.json
读取阶段1中的站点配置:
bash
cat .claude-plugin/sites-config.json

2.1 Analyze Navigation and Footer

2.1 分析导航和页脚

bash
ls 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.
bash
ls nav.md footer.md 2>/dev/null || echo "导航/页脚可能在DA中"
记录: 导航和页脚的位置(DA路径或本地文件)、菜单结构、移动端行为。

2.2 Identify Page Templates

2.2 识别页面模板

bash
ls -la templates/ 2>/dev/null && ls templates/
If templates exist, document each: Template name, purpose, how to apply (metadata setting).
bash
ls -la templates/ 2>/dev/null && ls templates/
如果模板存在,记录每个模板: 模板名称、用途、应用方式(元数据设置)。

2.3 Section Styles (for guide)

2.3 章节样式(用于指南)

bash
grep -E "\.section\." styles/styles.css 2>/dev/null | head -15
Document available section styles (e.g. dark, highlight, narrow) for the "Available Section Styles" table in the guide.

bash
grep -E "\.section\." styles/styles.css 2>/dev/null | head -15
记录可用的章节样式(例如dark、highlight、narrow),用于指南中的“可用章节样式”表格。

Phase 3: Document Blocks and Templates

阶段3:记录区块与模板

3.1 List and Analyze Blocks

3.1 列出并分析区块

bash
ls blocks/
Run block analysis silently. For each block determine: purpose, variants (e.g. from CSS
.blockname.variant
), and when authors should use it. Document ALL blocks in the project so authors know what's available.
bash
ls blocks/
静默运行区块分析。 为每个区块确定:用途、变体(例如来自CSS
.blockname.variant
)以及作者应在何时使用它。记录项目中的所有区块,以便作者了解可用资源。

3.2 Document Templates

3.2 记录模板

For each template identified in Phase 2.2, document: name, purpose, required metadata fields, and how to apply (
template: name
in Metadata block).
为阶段2.2中识别的每个模板记录:名称、用途、必填元数据字段以及应用方式(在元数据区块中设置
template: name
)。

3.3 DA and Block Library paths

3.3 DA和区块库路径

Get the content path from the Config Service site config (content source). Block Library URL is
https://da.live/#/{content-owner}/{content-path}/.da/library
— the path varies by project. Note which blocks/templates appear in the library.

从Config Service站点配置中获取内容路径(内容源)。区块库URL为
https://da.live/#/{content-owner}/{content-path}/.da/library
——路径因项目而异。记录库中显示的区块/模板。

Phase 4: Document Configuration Sheets

阶段4:记录配置表

4.1 Placeholders

4.1 占位符

Location:
/placeholders
in DA (or
/placeholders.xlsx
)
bash
ls placeholders.json 2>/dev/null
Document:
FieldDescription
LocationWhere to find placeholders in DA
LanguagesWhich language sheets exist (en, fr, etc.)
Key stringsImportant placeholders authors might need to update
位置: DA中的
/placeholders
(或
/placeholders.xlsx
bash
ls placeholders.json 2>/dev/null
记录:
字段描述
位置在DA中何处找到占位符
语言存在哪些语言表格(en、fr等)
关键字符串作者可能需要更新的重要占位符

4.2 Redirects

4.2 重定向

Location:
/redirects
in DA (or
/redirects.xlsx
)
bash
ls redirects.json 2>/dev/null
Document:
FieldDescription
LocationWhere to find redirects in DA
FormatSource column → Destination column
When to useURL changes, deleted pages, renamed pages
位置: DA中的
/redirects
(或
/redirects.xlsx
bash
ls redirects.json 2>/dev/null
记录:
字段描述
位置在DA中何处找到重定向
格式源列 → 目标列
使用场景URL更改、页面删除、页面重命名

4.3 Bulk Metadata

4.3 批量元数据

Location:
/metadata
in DA (or
/metadata.xlsx
)
bash
ls metadata.json 2>/dev/null
Document:
FieldDescription
LocationWhere to find bulk metadata in DA
PatternsURL patterns used (e.g.,
/news/*
)
PropertiesWhich metadata properties are set in bulk
位置: DA中的
/metadata
(或
/metadata.xlsx
bash
ls metadata.json 2>/dev/null
记录:
字段描述
位置在DA中何处找到批量元数据
模式使用的URL模式(例如
/news/*
属性批量设置的元数据属性

4.4 Other Configuration Sheets

4.4 其他配置表

Check for project-specific configuration sheets:
bash
undefined
检查项目特定的配置表:
bash
undefined

Look for other Excel/JSON config files

查找其他Excel/JSON配置文件

ls -la *.xlsx *.json 2>/dev/null | grep -v package

---
ls -la *.xlsx *.json 2>/dev/null | grep -v package

---

Phase 5: Generate Author Guide

阶段5:生成作者指南

5.1 Output File:
project-guides/AUTHOR-GUIDE.md

5.1 输出文件:
project-guides/AUTHOR-GUIDE.md

markdown
undefined
markdown
undefined

[Project Name] - Author Guide

[项目名称] - 作者指南

Quick Reference

快速参考

(Content path comes from the Config Service site config — e.g. content source like
content.da.live/org/site/
→ use
org/site
for the path after
#/
. This can differ per project; do not use code.owner/code.repo unless the API explicitly maps them.)
内容路径来自Config Service站点配置——例如内容源如
content.da.live/org/site/
→ 在
#/
后使用
org/site
作为路径。这可能因项目而异;除非API明确映射,否则请勿使用code.owner/code.repo。)

Sites

站点

SiteContent Source (DA)PreviewLive
{site1}[from site config]https://main--{site1}--{org}.aem.page/https://main--{site1}--{org}.aem.live/
(One row per site from Config Service. Content Source (DA) is the content path for that site — use it to build DA and Block Library URLs:
https://da.live/#/{path-from-content-source}/
and
.../.da/library
. Path format varies by project, e.g.
audemars-piguet/arbres-fondationsaudemarspiguet
.)
站点内容源(DA)预览生产
{site1}[来自站点配置]https://main--{site1}--{org}.aem.page/https://main--{site1}--{org}.aem.live/
(每行对应Config Service中的一个站点。**内容源(DA)**是该站点的内容路径——使用它构建DA和区块库URL:
https://da.live/#/{path-from-content-source}/
.../.da/library
。路径格式因项目而异,例如
audemars-piguet/arbres-fondationsaudemarspiguet
。)

Getting Started

入门指南

Access Requirements

访问要求

  • DA access (request from admin)
  • Preview/publish permissions
  • DA访问权限(向管理员申请)
  • 预览/发布权限

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
  1. 前往DA:[链接]
  2. 导航至正确的文件夹
  3. 创建新文档
  4. 使用库侧边栏中的区块
  5. 在底部添加元数据区块
  6. 预览 → 发布

Content Organization

内容组织

Site Structure

站点结构

[Describe the folder structure in DA]
[描述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 into your document.
WhatDetails
Open in DAUse the Library icon in the DA editor sidebar, or go directly to the Block Library URL (from Config Service content path for this project):
https://da.live/#/{content-owner}/{content-path}/.da/library
What's in itAll blocks and templates listed in the "Available Blocks" and "Page Templates" sections below appear in the library
How to useClick a block or template in the library to insert it at the cursor position in your document
When creating or editing a page, use the Library sidebar to add blocks instead of typing block names manually.
区块库是文档创作工具(DA)中的侧边栏,您可以在其中浏览并将区块和模板插入文档。
项目详情
在DA中打开使用DA编辑器侧边栏中的库图标,或直接访问区块库URL(来自此项目的Config Service内容路径):
https://da.live/#/{content-owner}/{content-path}/.da/library
包含内容以下“可用区块”和“页面模板”部分中列出的所有区块和模板均会显示在库中
使用方法点击库中的区块或模板,将其插入到文档中的光标位置
创建或编辑页面时,请使用库侧边栏添加区块,而非手动输入区块名称。

Available Blocks

可用区块

BlockPurposeVariantsUsage
[name][what it's for][variant1, variant2][when to use]
[Generate table rows for all blocks]
区块用途变体使用场景
[名称][用途][变体1, 变体2][何时使用]
[为所有区块生成表格行]

Page Templates

页面模板

TemplatePurposeRequired MetadataHow to Apply
[name][what type of pages][key fields]
template: [name]
in Metadata
[Generate table rows for all templates]
模板用途必填元数据应用方式
[名称][适用于何种页面][关键字段]在元数据中设置
template: [name]
[为所有模板生成表格行]

Configuration Sheets

配置表

SheetLocationPurposeWhen to Update
Placeholders
/placeholders
Reusable text strings, translationsChanging labels, button text
Redirects
/redirects
Forward old URLs to new URLsAfter deleting/moving pages
Bulk Metadata
/metadata
Apply metadata to multiple pagesSetting defaults by folder
表格位置用途更新场景
占位符
/placeholders
可复用文本字符串、翻译内容更改标签、按钮文本时
重定向
/redirects
将旧URL转发至新URL删除/移动页面后
批量元数据
/metadata
为多个页面应用元数据按文件夹设置默认值时

Publishing Workflow

发布工作流

EnvironmentDomainPurpose
Preview
.aem.page
Test changes before going live
Live
.aem.live
Production site
Workflow: Edit in DA → Preview → Publish → Live immediately
环境域名用途
预览
.aem.page
上线前测试更改
生产
.aem.live
生产站点
工作流: 在DA中编辑 → 预览 → 发布 → 立即上线

Common Tasks

常见任务

TaskSteps
Create a PageNavigate to folder → New → Document → Add content → Add Metadata → Preview → Publish
Edit a PageOpen in DA → Make changes → Preview → Publish
Delete a PageAdd redirect first → Delete document → Publish redirects
Update NavigationEdit
/nav
document → Preview → Publish
Update FooterEdit
/footer
document → Preview → Publish
任务步骤
创建页面导航至文件夹 → 新建 → 文档 → 添加内容 → 添加元数据 → 预览 → 发布
编辑页面在DA中打开 → 进行更改 → 预览 → 发布
删除页面首先添加重定向 → 删除文档 → 发布重定向
更新导航编辑
/nav
文档 → 预览 → 发布
更新页脚编辑
/footer
文档 → 预览 → 发布

Sections and Section Metadata

章节与章节元数据

Sections group content together. Create sections with horizontal rules (
---
).
Add styles with Section Metadata block at end of section:
Section Metadata
style[style-name]
Available Section Styles:
StyleEffect
[List project-specific styles in table format]
章节用于将内容分组。使用水平分隔线(
---
)创建章节。
在章节末尾添加章节元数据区块以设置样式:
章节元数据
style[样式名称]
可用章节样式:
样式效果
[以表格形式列出项目特定样式]

Page Metadata

页面元数据

PropertyRequiredPurposeExample
title
YesPage title for SEO"About Us"
description
YesSEO description"Learn about..."
image
NoSocial sharing image/images/og.jpg
template
NoApply page templateproject-article
[Add project-specific fields]
属性是否必填用途示例
title
页面SEO标题"关于我们"
description
SEO描述"了解我们的..."
image
社交分享图片/images/og.jpg
template
应用页面模板project-article
[添加项目特定字段]

Images and Media

图片与媒体

MethodHow
Drag & dropDrag images directly into DA editor
AEM AssetsUse Assets sidebar in DA
Best Practices: Descriptive filenames, always add alt text, images auto-optimized
方法操作方式
拖放将图片直接拖入DA编辑器
AEM Assets使用DA中的资源侧边栏
最佳实践: 使用描述性文件名,始终添加替代文本,图片会自动优化

Troubleshooting

故障排除

IssueSolution
Page not updating after publishWait 1-2 min for cache, hard refresh (Cmd+Shift+R)
Block not displaying correctlyCheck structure matches expected format, verify variant spelling
Images not showingVerify image uploaded to DA, check path is correct
Wrong template stylingCheck
template
value in Metadata, ensure it matches template name exactly
问题解决方案
发布后页面未更新等待1-2分钟缓存刷新,强制刷新页面(Cmd+Shift+R)
区块显示不正确检查结构是否符合预期格式,验证变体拼写
图片不显示验证图片已上传至DA,检查路径是否正确
模板样式错误检查元数据中的
template
值,确保与模板名称完全匹配

Resources

资源

Support Contacts

支持联系人

[Add project-specific contacts]
undefined
[添加项目特定联系人]
undefined

5.2 Convert to Professional PDF (MANDATORY)

5.2 转换为专业PDF(强制要求)

THIS STEP IS NOT OPTIONAL. YOU MUST GENERATE THE PDF NOW.
  1. Save markdown to:
    project-guides/AUTHOR-GUIDE.md
    • File MUST start with YAML frontmatter:
      yaml
      ---
      title: "[Project Name] - Author Guide"
      date: "[Full Date - e.g., February 17, 2026]"
      ---
    • Date format: Always use full date with day, month, and year (e.g., "February 17, 2026"), NOT just month and year
  2. IMMEDIATELY after saving the markdown, invoke the PDF conversion skill:
    Skill({ skill: "project-management:whitepaper", args: "project-guides/AUTHOR-GUIDE.md project-guides/AUTHOR-GUIDE.pdf" })
  3. Wait for PDF generation to complete (whitepaper skill auto-cleans source files)
DO NOT:
  • Skip the PDF conversion step
  • Tell user "PDF will be generated later" — generate it NOW
此步骤不可选。必须立即生成PDF。
  1. 将Markdown保存至:
    project-guides/AUTHOR-GUIDE.md
    • 文件必须以YAML前置内容开头:
      yaml
      ---
      title: "[项目名称] - 作者指南"
      date: "[完整日期 - 例如:2026年2月17日]"
      ---
    • 日期格式: 始终使用包含日、月、年的完整日期(例如"2026年2月17日"),不可仅使用月和年
  2. 保存Markdown后立即调用PDF转换技能:
    Skill({ skill: "project-management:whitepaper", args: "project-guides/AUTHOR-GUIDE.md project-guides/AUTHOR-GUIDE.pdf" })
  3. 等待PDF生成完成(白皮书技能会自动清理源文件)
请勿:
  • 跳过PDF转换步骤
  • 告知用户“PDF将稍后生成”——立即生成

5.3 Deliver to User

5.3 交付给用户

After PDF is generated, inform the user:
"✓ Author guide complete: project-guides/AUTHOR-GUIDE.pdf"

PDF生成完成后,告知用户:
"✓ 作者指南已完成:project-guides/AUTHOR-GUIDE.pdf"

Output

输出

FINAL OUTPUT:
project-guides/AUTHOR-GUIDE.pdf
All source files (.md, .html, .plain.html) are deleted after PDF generation. Only the PDF remains.
Location:
project-guides/
folder

最终输出:
project-guides/AUTHOR-GUIDE.pdf
PDF生成后,所有源文件(.md、.html、.plain.html)将被删除。仅保留PDF。
位置:
project-guides/
文件夹

Success Criteria

成功标准

Data Source Validation (CRITICAL):
  • Config Service API was called (
    https://admin.hlx.page/config/{ORG}/sites.json
    )
  • Site list came from API response, NOT from fstab.yaml or codebase analysis
  • DA/Block Library URLs derived from Config Service content source, NOT assumed from code.owner/repo
Content Validation:
  • Quick Reference table with all project URLs
  • All blocks documented in table format
  • All templates documented with required metadata
  • Configuration sheets documented
  • Publishing workflow explained
  • Common tasks documented
  • Section/page metadata options listed
  • Troubleshooting included
Output Validation:
  • PDF generated successfully
  • All source files cleaned up (only PDF remains)

数据源验证(关键):
  • 已调用Config Service API (
    https://admin.hlx.page/config/{ORG}/sites.json
    )
  • 站点列表来自API响应,而非fstab.yaml或代码库分析
  • DA/区块库URL派生自Config Service内容源,而非从code.owner/repo推断
内容验证:
  • 包含所有项目URL的快速参考表格
  • 所有区块均以表格形式记录
  • 所有模板均记录了必填元数据
  • 配置表已记录
  • 发布工作流已说明
  • 常见任务已记录
  • 章节/页面元数据选项已列出
  • 故障排除内容已包含
输出验证:
  • PDF生成成功
  • 所有源文件已清理(仅保留PDF)

Tips for Clear Documentation

清晰文档的提示

  1. Use tables for compact reference information
  2. Keep language simple - avoid technical jargon
  3. Use examples from actual project content
  4. Test procedures before documenting them
  1. 使用表格呈现紧凑的参考信息
  2. 语言简洁 - 避免技术术语
  3. 使用实际项目内容的示例
  4. 记录前测试流程