Agent skill

Create Site

by adobe in adobe/skills

Use this when a user wants to create a brand-new AEM Edge Delivery site from scratch and no GitHub repository or DA content exists yet — triggers include 'set up a new site', 'create a new EDS…

Apache-2.0Auto-check passedDevelopment

Install Create Site

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

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

GitHub CLI
$ gh skill install adobe/skills create-site --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/edge-delivery-services/skills/create-site .claude/skills/create-site && 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
create-site
GitHub stars
195
Token cost
~2.8k tokens
SKILL.md length
1,104 words
Files
4
Skills in repo
105
Repo updated
First seen
Licence
Apache-2.0

At a glance

Use this when a user wants to create a brand-new AEM Edge Delivery site from scratch and no GitHub repository or DA content exists yet — triggers include 'set up a new site', 'create a new EDS…

  • Works in 8 steps: Create TodoList → Gather Inputs → Create GitHub Repository → …
  • Include set up a new site
  • SKILL.md covers When to Use This Skill, Prerequisites, Related Skills and Step 0: Create TodoList, plus 9 more sections
  • Calls gh, curl and node; reaches github.com and da.live; needs DA_TOKEN and GITHUB_TOKEN

What it does

Create Site is an agent skill from adobe/skills. Use this when a user wants to create a brand-new AEM Edge Delivery site from scratch and no GitHub repository or DA content exists yet — triggers include 'set up a new site', 'create a new EDS project', or 'onboard a new site'. Covers creating the GitHub repo from the boilerplate, installing aem-code-sync, seeding initial DA content (nav, footer, homepage), and returning a live preview URL. For importing or migrating existing pages use page-import; for building blocks on an existing site use…

Its SKILL.md is about 2.8k 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 sits in Development, covering Project scaffolding. It works with Adobe Experience Manager and GitHub. The repository describes itself as: Adobe Skills for Agents. The licence is Apache-2.0.

When your agent uses it

  • Include set up a new site
  • Create a new EDS project
  • Onboard a new site

Example prompts

  • “set up a new site”
  • “create a new EDS project”
  • “onboard a new site”
  • “/create-site”

Requirements

  • Node.js
  • A credential in GITHUB_TOKEN

Workflow steps

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

  1. Create TodoList
  2. Gather Inputs
  3. Create GitHub Repository
  4. Install aem-code-sync (human action required)
  5. Authenticate with DA
  6. Create Initial Content in DA
  7. Trigger Preview
  8. Confirm and Hand Off

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 nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • curl
    • node
    • npm

    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:

    • github.com
    • da.live
    • admin.hlx.page
    • api.github.com
    • admin.da.live

    Also links to:

    • aem.live
    • opensource.adobe.com

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

  • Credentials

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

    • DA_TOKEN
    • GITHUB_TOKEN

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

Context cost

Create Site loads about 2.8k tokens when it runs. Until then it costs about 134 tokens; SKILL.md has 1,104 words of instructions outside code blocks.

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

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 passed

The automated check found no risky patterns in SKILL.md.

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,104 words, ~2,786 tokens.

Download SKILL.mdSave it as .claude/skills/create-site/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
create-site
description
Use this when a user wants to create a brand-new AEM Edge Delivery site from scratch and no GitHub repository or DA content exists yet — triggers include 'set up a new site', 'create a new EDS project', or 'onboard a new site'. Covers creating the GitHub repo from the boilerplate, installing aem-code-sync, seeding initial DA content (nav, footer, homepage), and returning a live preview URL. For importing or migrating existing pages use page-import; for building blocks on an existing site use content-driven-development.
license
Apache-2.0
metadata.version
1.1.0

Create a New AEM Edge Delivery Site

This skill walks through the full onboarding flow for a new AEM Edge Delivery site. It handles everything that can be automated and clearly signals the steps that require human action.

When to Use This Skill

Use this skill when:

  • A user wants to create a brand-new AEM Edge Delivery site from scratch
  • A user asks to "set up a new site", "create a new EDS project", or "onboard a new site"
  • No GitHub repository or DA content exists yet for the project

Do NOT use this skill for:

  • Importing or migrating existing pages (use page-import skill)
  • Building or modifying blocks on an existing site (use content-driven-development skill)

Prerequisites

  • A GitHub account with permission to create repositories in the target org
  • An Adobe IMS account with access to DA (da.live)
  • gh CLI authenticated (gh auth status) or a GitHub personal access token with repo scope
  • Node.js (for DA token management via da-auth-helper)
  • page-import — Import existing pages into the newly created site
  • content-driven-development — Build and modify blocks once the site exists
  • building-blocks — Implement new block code

Step 0: Create TodoList

Create a checklist to track progress (use your agent's task-tracking tool if available):

  1. Gather inputs — org, repo name, site name collected
  2. Create GitHub repository — repo created from boilerplate template
  3. Install aem-code-sync (human action) — GitHub App installed on repo
  4. Authenticate with DA — valid IMS token obtained
  5. Create initial content in DA — nav, footer, index created
  6. Trigger preview — all three paths return 200/201
  7. Hand off — preview URL and DA links delivered to user

Step 1: Gather Inputs

Ask the user for the following. Do not proceed until all required inputs are provided.

  1. GitHub org — the GitHub organization or username where the repo will be created (e.g. my-org)
  2. Project name — the repository name, lowercase, hyphens only (e.g. my-site)
  3. Site name — the human-readable name used in content (e.g. My Site). If not provided, derive it from the project name.

Store as: {{ORG}}, {{REPO}}, {{SITE_NAME}}


Step 2: Create GitHub Repository

Create a new repository using the adobe/aem-boilerplate template.

Option A — GitHub CLI (preferred, handles auth automatically):

bash
gh repo create {{ORG}}/{{REPO}} \
  --template adobe/aem-boilerplate \
  --description "{{SITE_NAME}} — AEM Edge Delivery site" \
  --public

Check if gh is available with gh auth status. If not authenticated, run gh auth login first.

Option B — GitHub API (if gh CLI is not available):

POST https://api.github.com/repos/adobe/aem-boilerplate/generate
Authorization: Bearer {{GITHUB_TOKEN}}
Content-Type: application/json

{
  "owner": "{{ORG}}",
  "name": "{{REPO}}",
  "description": "{{SITE_NAME}} — AEM Edge Delivery site",
  "private": false,
  "include_all_branches": false
}

To obtain a token: https://github.com/settings/tokens/new — scope: repo.

Success: HTTP 201 (API) or exit code 0 (CLI). The repo is now live at https://github.com/{{ORG}}/{{REPO}}.


Step 3: Install aem-code-sync (human action required)

The aem-code-sync GitHub App connects the repository to AEM's content delivery pipeline. This step cannot be automated — the user must complete it in the browser.

Tell the user:

Action required: Install the AEM Code Sync app on your new repository.

  1. Open this URL: https://github.com/apps/aem-code-sync/installations/new
  2. Under "Repository access", select Only select repositories
  3. Choose {{ORG}}/{{REPO}} from the list
  4. Click Save

Reply "done" when complete.

Wait for confirmation before proceeding.

Verify: After confirmation, check that https://admin.hlx.page/status/{{ORG}}/{{REPO}}/main/ returns a valid JSON response (not 404). If it does, the app is correctly installed.


Step 4: Authenticate with DA

DA requires Adobe IMS authentication. Choose the appropriate path:

Option A — da-auth-helper (preferred)

da-auth-helper (https://github.com/adobe-rnd/da-auth-helper) caches IMS tokens at ~/.aem/da-token.json. Always check the cache first before triggering a new OAuth flow.

  1. Check for a valid cached token:
bash
node -e "
  const fs = require('fs');
  const p = process.env.HOME + '/.aem/da-token.json';
  if (!fs.existsSync(p)) { console.log('No cache'); process.exit(1); }
  const t = JSON.parse(fs.readFileSync(p));
  console.log('Valid:', t.expires_at > Date.now());
  console.log('Expires:', new Date(t.expires_at).toISOString());
"
  1. If valid, capture the token and skip to Step 5:
bash
DA_TOKEN=$(node -e "const t = require(process.env.HOME + '/.aem/da-token.json'); process.stdout.write(t.access_token);")
  1. If missing or expired, install da-auth-helper from GitHub (it is not published to npm) and refresh:
bash
npm install -g github:adobe-rnd/da-auth-helper
da-auth-helper token

This opens a browser for Adobe IMS login and writes the new token to ~/.aem/da-token.json. Then capture it as in step 2.

Option B — DA MCP is configured

If the DA MCP server is available, trigger the authentication tool to start the OAuth flow and share the authorization URL with the user.

Option C — Manual token

Ask the user to obtain an IMS token from their browser (e.g. from the DA network tab or an existing session) and paste it. Store as {{DA_TOKEN}}.


Show full SKILL.md (442 more words)Show less

Step 5: Create Initial Content in DA

Create the three mandatory pages every EDS site requires. Use the templates below exactly — they are pre-validated for EDS compliance.

Option A — DA MCP: Call the DA create source tool three times with the content below.

Option B — DA API:

Write each file to a temp file first, then POST using @ syntax. Inline multiline content with -F 'data=...' causes curl to fail (exit 26). Use /usr/bin/curl explicitly to avoid PATH resolution issues in subshells.

bash
cat > /tmp/nav.html << 'EOF'
<nav content>
EOF
/usr/bin/curl -s -o /dev/null -w "%{http_code}" -X POST "https://admin.da.live/source/{{ORG}}/{{REPO}}/nav.html" \
  -H "Authorization: Bearer {{DA_TOKEN}}" \
  -F "data=@/tmp/nav.html;type=text/html"

Repeat for footer.html and index.html.

Verify: After each POST, expect HTTP 201. If you get 401, the token has expired — return to Step 4.


nav.html
html
<main>
  <div>
    <p><a href="/">{{SITE_NAME}}</a></p>
  </div>
  <div>
    <ul>
      <li><a href="/">Home</a></li>
    </ul>
  </div>
  <div></div>
</main>
html
<main>
  <div>
    <p>© 2024 {{SITE_NAME}}. All rights reserved.</p>
  </div>
</main>
index.html
html
<main>
  <div>
    <h1>Welcome to {{SITE_NAME}}</h1>
    <p>Your new site is ready. Start editing this page in DA.</p>
  </div>
</main>

Step 6: Trigger Preview

Preview pulls the DA content into the AEM delivery pipeline and makes it accessible on the .aem.page domain.

DA-sourced content requires the Bearer token on preview requests — even for public repos. Use /usr/bin/curl explicitly.

bash
/usr/bin/curl -s -o /dev/null -w "%{http_code}" -X POST "https://admin.hlx.page/preview/{{ORG}}/{{REPO}}/main/nav" \
  -H "Authorization: Bearer {{DA_TOKEN}}"
/usr/bin/curl -s -o /dev/null -w "%{http_code}" -X POST "https://admin.hlx.page/preview/{{ORG}}/{{REPO}}/main/footer" \
  -H "Authorization: Bearer {{DA_TOKEN}}"
/usr/bin/curl -s -o /dev/null -w "%{http_code}" -X POST "https://admin.hlx.page/preview/{{ORG}}/{{REPO}}/main/" \
  -H "Authorization: Bearer {{DA_TOKEN}}"

Success: HTTP 200 or 201 for each. The homepage is now live at:

https://main--{{REPO}}--{{ORG}}.aem.page/

Step 7: Confirm and Hand Off

Tell the user:

Your site is ready!

  • Preview: https://main--{{REPO}}--{{ORG}}.aem.page/
  • Browse content in DA: https://da.live/#/{{ORG}}/{{REPO}}/
  • Edit homepage: https://da.live/edit#/{{ORG}}/{{REPO}}/index
  • Edit nav: https://da.live/edit#/{{ORG}}/{{REPO}}/nav
  • Edit footer: https://da.live/edit#/{{ORG}}/{{REPO}}/footer
  • GitHub repo: https://github.com/{{ORG}}/{{REPO}}

To start developing locally:

bash
git clone https://github.com/{{ORG}}/{{REPO}}.git
cd {{REPO}}
npm install
aem up

What would you like to do next — add more pages, customize a block, or set up a custom domain?


Troubleshooting

SymptomLikely causeFix
Step 2 returns 422Repo name already existsAsk user for a different name
Step 3 verify returns 404aem-code-sync not installedRe-send the installation URL
Step 4 cached token missing/expiredNo prior DA session on this machineInstall da-auth-helper from GitHub (npm install -g github:adobe-rnd/da-auth-helper) and run da-auth-helper token
Step 5 curl exits with code 26Inline multiline content in -F flagWrite content to a temp file and use @/tmp/file.html syntax
Step 5 returns 401Expired or missing IMS tokenRe-check ~/.aem/da-token.json expiry; ask user for a fresh token
Step 5 returns 403Token lacks permission for this org/repoConfirm the user has write access to {{ORG}}/{{REPO}} in DA
Step 6 returns 401DA-sourced content requires auth on previewAdd -H "Authorization: Bearer {{DA_TOKEN}}" to preview requests
Step 6 returns 404aem-code-sync not installed correctlyVerify Step 3, then retry
curl: command not found in scriptsPATH not resolved in subshellUse /usr/bin/curl explicitly
Preview URL shows blank pagenav or index not previewedRe-run Step 6 for the failing path

Reference

DA URL patterns
  • Browse folder: https://da.live/#/{{org}}/{{repo}}{{folder-path}}
  • Edit HTML document: https://da.live/edit#/{{org}}/{{repo}}{{path-without-extension}}
  • Edit JSON/sheet: https://da.live/sheet#/{{org}}/{{repo}}{{path-without-extension}}

© 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 3 other files in plugins/aem/edge-delivery-services/skills/create-site of adobe/skills.

  • SKILL.md
  • .releaserc.json
  • CHANGELOG.md
  • package.json

Open the folder on GitHubat commit cbc9952

Compare with similar skills

Create Site 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.

Create Site compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Create Site this skilladobe/skills195—~2.8kAutomated safety check: PassApache-2.0
degit Project ScaffoldingRich-Harris/degit7.9k—~534Automated safety check: PassMIT
Rust Hygiene Audittsz-org/tsz572—~1.5kAutomated safety check: PassApache-2.0
Create Vechain Dappvechain/x-app-template450—~1.8kAutomated safety check: PassMIT
Upgrade Starter Kitworkadventure/map-starter-kit156—~1.3kAutomated safety check: NotesCustom licence
Sleap Supporttalmolab/sleap616—~2kAutomated safety check: PassBSD-3-Clause-Clear

Similar skills

  • degit Project Scaffolding

    Rich-Harris/degit

    Downloads a repository snapshot or template with degit into an empty folder, from GitHub, GitLab, Bitbucket, Sourcehut or a Gist, optionally at a branch, tag or commit.

    7.9k GitHub stars~534 tokensUpdated 24 days ago
    DevelopmentAuto-check passed
  • Run a deep DRY + code-hygiene audit of the Rust workspace and turn the findings into verified, deduplicated, hierarchical GitHub tech-debt issues.

    572 GitHub stars~1.5k tokensUpdated 27 days ago
    DevelopmentAuto-check passed
  • Create Vechain Dapp

    vechain/x-app-template

    Scaffold a VeChain dApp with Next.js, VeChain Kit, Chakra UI v3, and GitHub Pages deployment.

    450 GitHub stars~1.8k tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • Upgrade Starter Kit

    workadventure/map-starter-kit

    Upgrade a WorkAdventure map repository to the latest version of the map-starter-kit (github.com/workadventure/map-starter-kit) - refreshes package.json dependencies, vite/tsconfig/build config, CI…

    156 GitHub stars~1.3k tokensUpdated 5 days ago
    DevelopmentAuto-check: notes
  • Sleap Support

    talmolab/sleap

    Handle SLEAP GitHub support workflow for issues and discussions.

    616 GitHub stars~2k tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Create PR

    genlayerlabs/genlayer-studio

    Create GitHub pull requests by analyzing branch diff and following the project template

    180 GitHub stars~635 tokensUpdated 7 days ago
    DevelopmentAuto-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

Categories

Questions about Create Site

What does Create Site do?

Use this when a user wants to create a brand-new AEM Edge Delivery site from scratch and no GitHub repository or DA content exists yet — triggers include 'set up a new site', 'create a new EDS…. Create Site is an agent skill from adobe/skills. Use this when a user wants to create a brand-new AEM Edge Delivery site from scratch and no GitHub repository or DA content exists yet — triggers include 'set up a new site', 'create a new EDS project', or 'onboard a new site'.

When should I use Create Site?

Create Site fits situations like: include set up a new site; create a new EDS project; onboard a new site.

How do I install Create Site in Claude Code?

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

How do I install Create Site in Codex?

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

Can I use Create Site 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 create-site -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-site, .gemini/skills/create-site, .github/skills/create-site and .opencode/skills/create-site in your project.

What does Create Site need to run?

Going by SKILL.md and its folder, Create Site needs the command-line tools its instructions call (gh, curl, node and npm) and credentials named DA_TOKEN and GITHUB_TOKEN. Our summary lists: Node.js; A credential in GITHUB_TOKEN.

Does Create Site access the network?

SKILL.md names 7 domains. In commands or code: github.com, da.live, admin.hlx.page, api.github.com and admin.da.live; the agent is likely to contact these when it follows the instructions. As links in the text: aem.live and opensource.adobe.com. This is read from the text; nothing was executed.

Is Create Site safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Create Site use?

Create Site 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 Create Site use?

About 2.8k tokens (SKILL.md is roughly 11k 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 Create Site?

Skills that share tags, products or a category with Create Site: degit Project Scaffolding (Rich-Harris/degit, 7.9k stars), Rust Hygiene Audit (tsz-org/tsz, 572 stars), Create Vechain Dapp (vechain/x-app-template, 450 stars) and Upgrade Starter Kit (workadventure/map-starter-kit, 156 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Create Site?

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.