executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
sitemap-auditValidate an AEM Edge Delivery Services sitemap.xml against actual site content. Cross-references the sitemap with the query index, checks URL reachability, validates lastmod dates, and identifies missing or orphaned pages. Use when auditing SEO health, preparing for launch, or investigating indexing issues.
Independent GitHub snapshot · Automated classification · Original documentation governs
Validate an EDS sitemap.xml against published content, cross-reference with the query index, check URL health, and produce a report with specific additions, removals, and fixes.
This skill fetches external web pages and XML/JSON endpoints for analysis. When fetching:
For EDS sitemap configuration details (helix-sitemap.yaml, glob rules, multilingual setup, robots.txt behavior, query index usage), see references/eds-sitemap-reference.md.
Not suited for non-EDS sites, generating sitemaps from scratch, or sites with 10,000+ URLs (spot-check a sample instead).
const robotsResp = await fetch('https://{domain}/robots.txt');
Check for:
Sitemap: directive -- must point to the production URL, not .aem.live or .aem.page.Disallow rules -- verify nothing blocks /sitemap.xml. Disallow: / on production is a blocker.// Primary location
const sitemapResp = await fetch('https://{domain}/sitemap.xml');
// Fallback: try the .aem.live origin
const fallbackResp = await fetch('https://main--{repo}--{owner}.aem.live/sitemap.xml');
Parse the XML and extract each <loc>, <lastmod>, total URL count, and whether a sitemap index is used. If 404 on all locations, inform the user no sitemap is configured and stop the audit.
For each URL, strip the domain to get the path, remove trailing slashes, and flag:
www.example.com vs example.com)..html extensions (EDS uses extensionless URLs).#section).The query index is the canonical source of truth for published EDS content.
// Fetch all pages (paginate until data is empty)
let offset = 0;
const limit = 256;
let allEntries = [];
let page;
do {
const resp = await fetch(`https://{domain}/query-index.json?offset=${offset}&limit=${limit}`);
page = await resp.json();
allEntries = allEntries.concat(page.data);
offset += limit;
} while (page.data.length === limit);
Scan the sitemap for URLs containing /fragments/ or /drafts/ -- these are blockers. Also flag utility paths (/nav, /footer, /search, /404) as warnings.
/drafts/, /fragments/, /nav, /footer, pages with robots: noindex). Everything else is a gap.<lastmod> differs from query index lastModified. Indicates a properties.lastmod mapping issue.// Check each sitemap URL
const resp = await fetch(url, { method: 'HEAD', redirect: 'manual' });
Flag: 404 = blocker (remove from sitemap), 301/302 = warning (update URL), 5xx = warning (re-check later).
lastmod to prioritize crawling.lastmod; suggests dates are set to build/deploy time, not actual content modification.YYYY-MM-DD or YYYY-MM-DDThh:mm:ssTZD.<link rel="canonical"> on 5-10 pages..html extensions -- warning; EDS uses extensionless URLs.http:// protocol -- warning; all URLs should use https://.| Metric | Count |
|---|---|
| Total URLs in sitemap | X |
| Valid (200 OK) | X |
| Broken (404) | X |
| Redirected (301/302) | X |
| Missing from sitemap (in query index only) | X |
| Stale entries (in sitemap only) | X |
| Fragment/draft leaks | X |
| Lastmod mismatches | X |
Pages in the query index but missing from the sitemap (excluding intentional exclusions). List path, title, and reason.
Sitemap URLs that return 404 or redirect. List URL and reason.
Other issues: fragment/draft leaks, missing lastmod, robots.txt problems, .html extensions, domain mismatches. For each, list the affected URLs and the specific helix-sitemap.yaml change to make.
/drafts/** and /fragments/** to exclude in helix-sitemap.yaml).lastmod mapping (properties.lastmod: lastModified).Sitemap: directive uses the production domain.helix-sitemap.yaml via Sidekick and verify at /sitemap.xml.For troubleshooting common issues, see references/eds-sitemap-reference.md.
helix-sitemap.yaml. Most EDS sitemap problems are configuration problems.