create-content-sdk-app 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/templates/nextjs/.agents/skills/content-sdk-component-data-strategy/SKILL.md +37 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-component-registration/SKILL.md +36 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-component-scaffold/SKILL.md +34 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-component-variants/SKILL.md +36 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-dictionary-and-i18n/SKILL.md +35 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-editing-safe-rendering/SKILL.md +37 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-field-usage-image-link-text/SKILL.md +36 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-graphql-data-fetching/SKILL.md +38 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-multisite-management/SKILL.md +37 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-route-configuration/SKILL.md +38 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-site-setup-and-env/SKILL.md +36 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-sitemap-robots/SKILL.md +37 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-troubleshoot-editing/SKILL.md +39 -0
- package/dist/templates/nextjs/.agents/skills/content-sdk-upgrade-assistant/SKILL.md +36 -0
- package/dist/templates/nextjs/AGENTS.md +1 -0
- package/dist/templates/nextjs/CLAUDE.md +6 -170
- package/dist/templates/nextjs/Skills.md +79 -0
- package/dist/templates/nextjs/package.json +2 -2
- package/dist/templates/nextjs/src/Bootstrap.tsx +20 -13
- package/dist/templates/nextjs/src/byoc/index.tsx +1 -1
- package/dist/templates/nextjs/src/components/content-sdk/CdpPageView.tsx +1 -1
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-component-data-strategy/SKILL.md +37 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-component-registration/SKILL.md +38 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-component-scaffold/SKILL.md +38 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-component-variants/SKILL.md +36 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-dictionary-and-i18n/SKILL.md +37 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-editing-safe-rendering/SKILL.md +37 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-field-usage-image-link-text/SKILL.md +36 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-graphql-data-fetching/SKILL.md +37 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-multisite-management/SKILL.md +37 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-route-configuration/SKILL.md +38 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-site-setup-and-env/SKILL.md +36 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-sitemap-robots/SKILL.md +37 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-troubleshoot-editing/SKILL.md +39 -0
- package/dist/templates/nextjs-app-router/.agents/skills/content-sdk-upgrade-assistant/SKILL.md +36 -0
- package/dist/templates/nextjs-app-router/.sitecore/import-map.server.ts +2 -2
- package/dist/templates/nextjs-app-router/AGENTS.md +6 -6
- package/dist/templates/nextjs-app-router/CLAUDE.md +6 -271
- package/dist/templates/nextjs-app-router/README.md +0 -36
- package/dist/templates/nextjs-app-router/Skills.md +79 -0
- package/dist/templates/nextjs-app-router/package.json +3 -2
- package/dist/templates/nextjs-app-router/src/Bootstrap.tsx +20 -12
- package/dist/templates/nextjs-app-router/src/app/[site]/[locale]/[[...path]]/layout.tsx +19 -0
- package/dist/templates/nextjs-app-router/src/app/[site]/[locale]/[[...path]]/not-found.tsx +3 -28
- package/dist/templates/nextjs-app-router/src/app/[site]/[locale]/[[...path]]/page.tsx +6 -21
- package/dist/templates/nextjs-app-router/src/app/[site]/layout.tsx +5 -21
- package/dist/templates/nextjs-app-router/src/app/not-found.tsx +1 -23
- package/dist/templates/nextjs-app-router/src/byoc/index.tsx +1 -1
- package/dist/templates/nextjs-app-router/src/components/content-sdk/CdpPageView.tsx +1 -1
- package/package.json +2 -2
- package/dist/initializers/angular/args.js +0 -2
- package/dist/initializers/angular/index.js +0 -30
- package/dist/initializers/angular/prompts.js +0 -20
- package/dist/templates/angular/.postcssrc.json +0 -5
- package/dist/templates/angular/.vscode/extensions.json +0 -4
- package/dist/templates/angular/README.md +0 -3
- package/dist/templates/angular/angular.json +0 -79
- package/dist/templates/angular/package.json +0 -58
- package/dist/templates/angular/public/favicon.ico +0 -0
- package/dist/templates/angular/src/app/app.config.server.ts +0 -12
- package/dist/templates/angular/src/app/app.config.ts +0 -31
- package/dist/templates/angular/src/app/app.css +0 -0
- package/dist/templates/angular/src/app/app.html +0 -1
- package/dist/templates/angular/src/app/app.routes.server.ts +0 -15
- package/dist/templates/angular/src/app/app.routes.ts +0 -28
- package/dist/templates/angular/src/app/app.ts +0 -12
- package/dist/templates/angular/src/app/loaders/error.loader.ts +0 -12
- package/dist/templates/angular/src/app/loaders/index.ts +0 -14
- package/dist/templates/angular/src/app/loaders/not-found.loader.ts +0 -12
- package/dist/templates/angular/src/app/loaders/page.loader.ts +0 -15
- package/dist/templates/angular/src/app/loaders/stub-utils.ts +0 -83
- package/dist/templates/angular/src/app/pages/error.component.ts +0 -124
- package/dist/templates/angular/src/app/pages/not-found.component.ts +0 -85
- package/dist/templates/angular/src/app/pages/page.component.ts +0 -58
- package/dist/templates/angular/src/app/shared/layout.component.ts +0 -106
- package/dist/templates/angular/src/index.html +0 -13
- package/dist/templates/angular/src/main.server.ts +0 -8
- package/dist/templates/angular/src/main.ts +0 -6
- package/dist/templates/angular/src/server.ts +0 -65
- package/dist/templates/angular/src/styles.css +0 -3
- package/dist/templates/angular/tsconfig.json +0 -38
- package/dist/templates/angular/tsconfig.spec.json +0 -10
- package/dist/templates/nextjs/LLMs.txt +0 -179
- package/dist/templates/nextjs-app-router/LLMs.txt +0 -236
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-component-data-strategy
|
|
3
|
+
description: Component data for Pages Router: after getPage use client.getComponentData(page.layout, context, components) to resolve component props; pass result to layout renderer. All Sitecore-driven component data goes through this flow. Use when wiring component data or BYOC.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Component Data Strategy (Pages Router)
|
|
7
|
+
|
|
8
|
+
This app **uses getComponentData**. After getPage, use **client.getComponentData(page.layout, context, components)** to resolve component props and pass the result to the layout renderer. All Sitecore-driven component data goes through this flow.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks how to pass data to components, wire component props, or integrate custom/BYOC components.
|
|
13
|
+
- Task involves getComponentData, component props, or BYOC.
|
|
14
|
+
- User mentions "component data," "props," "BYOC," or "getComponentData."
|
|
15
|
+
|
|
16
|
+
## How to perform
|
|
17
|
+
|
|
18
|
+
- In [[...path]].tsx: getPage(path, { locale: context.locale }), then getDictionary, then getComponentData(page.layout, context, components). Return props to Layout; do not fetch in _app or in child components. Register BYOC in .sitecore/component-map.ts; getComponentData passes resolved props.
|
|
19
|
+
|
|
20
|
+
## Hard Rules
|
|
21
|
+
|
|
22
|
+
- **Flow in catch-all page:** In getStaticProps/getServerSideProps: (1) `client.getPage(path, { locale: context.locale })`, (2) `client.getDictionary({ site: page.siteName, locale: page.locale })`, (3) `client.getComponentData(page.layout, context, components)` to resolve component props. Return `{ props: { page, dictionary, componentProps }, notFound: !page }`. Pass these props to Providers and Layout; do not fetch Sitecore data in _app.
|
|
23
|
+
- Do not fetch per-component data in parallel outside this flow unless the app pattern explicitly does so. All Sitecore-driven component data goes through getComponentData.
|
|
24
|
+
- Single client instance; do not create a new client inside components. The client is used in getStaticProps/getServerSideProps and in API routes.
|
|
25
|
+
- **BYOC or custom components:** Must be registered in `.sitecore/component-map.ts` and receive props in the shape the layout expects (e.g. fields, params). getComponentData will pass the resolved props.
|
|
26
|
+
- Do not fetch layout or page data inside a child component (e.g. another getPage call); fetch at the catch-all page level and pass props via getComponentData and layout.
|
|
27
|
+
|
|
28
|
+
## Stop Conditions
|
|
29
|
+
|
|
30
|
+
- Stop if the user wants to fetch page/layout data inside a child component; recommend fetching in [[...path]].tsx and passing via getComponentData and layout.
|
|
31
|
+
- Do not duplicate getComponentData or getPage logic across components; keep data fetching in the catch-all page only.
|
|
32
|
+
- Do not fetch Sitecore data in _app; all data flows from [[...path]].tsx.
|
|
33
|
+
|
|
34
|
+
## References
|
|
35
|
+
|
|
36
|
+
- content-sdk-graphql-data-fetching and [AGENTS.md](../../../AGENTS.md) for getPage, getComponentData, and data flow.
|
|
37
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-component-registration
|
|
3
|
+
description: Registers Sitecore components in .sitecore/component-map.ts so layout and editing can resolve them. Pages Router uses a single map; used by getComponentData and editing API routes. Use when registering a new component or when layout/editor cannot find a component.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Component Registration (Pages Router)
|
|
7
|
+
|
|
8
|
+
Register components in the Sitecore component map so the layout and editing pipeline can resolve and render them. This app has a **single** map: `.sitecore/component-map.ts`.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- After scaffolding or adding a new Sitecore component (must be registered).
|
|
13
|
+
- User reports a component not rendering, "component not found," or layout/placeholder showing raw component name.
|
|
14
|
+
- Task involves `.sitecore/component-map.ts`.
|
|
15
|
+
- User asks how to register a component or fix component resolution.
|
|
16
|
+
|
|
17
|
+
## How to perform
|
|
18
|
+
|
|
19
|
+
- Open `.sitecore/component-map.ts` and add an entry mapping the layout component name to the React component import. The map is used by getComponentData and editing API routes; keep keys consistent with layout and existing entries.
|
|
20
|
+
|
|
21
|
+
## Hard Rules
|
|
22
|
+
|
|
23
|
+
- Every component rendered from Sitecore layout must be registered in `.sitecore/component-map.ts`. Keep the map in sync with `src/components/`.
|
|
24
|
+
- The map is used by `getComponentData(page.layout, context, components)` in the catch-all page and by editing API routes (`src/pages/api/editing/config.ts`, `render.ts`, `feaas/render.ts`).
|
|
25
|
+
- Use consistent component names (same key in map as used in layout). Follow existing naming in the map.
|
|
26
|
+
- Do not remove or rename registrations without updating all references (layout, getComponentData, editing routes).
|
|
27
|
+
|
|
28
|
+
## Stop Conditions
|
|
29
|
+
|
|
30
|
+
- Stop if modifying the component map would break existing layout or editing; suggest a safe change or ask for confirmation.
|
|
31
|
+
- Do not edit `.sitecore/metadata.json` or import-map unless the task explicitly requires it.
|
|
32
|
+
|
|
33
|
+
## References
|
|
34
|
+
|
|
35
|
+
- [AGENTS.md](../../../AGENTS.md) for component map and editing routes.
|
|
36
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-component-scaffold
|
|
3
|
+
description: Creates new Sitecore components with correct file structure, props interface, and placement under src/components/. Use when adding a new component from scratch or scaffolding a component. Pages Router: register in .sitecore/component-map.ts only.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Component Scaffold (Pages Router)
|
|
7
|
+
|
|
8
|
+
Scaffold new Sitecore components so they integrate with the layout and editing pipeline. This app uses Pages Router with a single component map.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks to add a new Sitecore component, create a component from scratch, or scaffold a component.
|
|
13
|
+
- Task involves creating a new React component that will be rendered from Sitecore layout/placeholders.
|
|
14
|
+
- User mentions "new component," "add component," or "component file structure."
|
|
15
|
+
|
|
16
|
+
## How to perform
|
|
17
|
+
|
|
18
|
+
- Create a new file under `src/components/` (or existing feature folder). Define props (fields, params), export a single default component. Register in `.sitecore/component-map.ts` (content-sdk-component-registration). Run `npm run build` to verify.
|
|
19
|
+
|
|
20
|
+
## Hard Rules
|
|
21
|
+
|
|
22
|
+
- Place components under `src/components/`. Use existing folder conventions.
|
|
23
|
+
- Define a props interface with the component's fields (e.g. `fields: { title: Field; ... }`) and any params. Use types from `@sitecore-content-sdk/react` or the app's types.
|
|
24
|
+
- Export a single default component; one component per file unless the app pattern differs.
|
|
25
|
+
- After creating the component file, register it in `.sitecore/component-map.ts` (see content-sdk-component-registration). Do not leave the component unregistered. Pages Router has a single map used by getComponentData and editing API routes.
|
|
26
|
+
|
|
27
|
+
## Stop Conditions
|
|
28
|
+
|
|
29
|
+
- Do not create components in `.next/`, `node_modules/`, or build output.
|
|
30
|
+
|
|
31
|
+
## References
|
|
32
|
+
|
|
33
|
+
- [AGENTS.md](../../../AGENTS.md) for app structure and component map.
|
|
34
|
+
- [Skills.md](../../../Skills.md) for capability map. [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-component-variants
|
|
3
|
+
description: Implements component variants: different renderings or data-driven variants of the same component type. Pages Router: register in .sitecore/component-map.ts; getComponentData resolves props. Use when one component has multiple presentations.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Component Variants (Pages Router)
|
|
7
|
+
|
|
8
|
+
One component definition can have multiple presentations or data-driven variants. Component props are resolved by **getComponentData(page.layout, context, components)**; keep registration and layout aligned.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks for different "variants," "versions," or "presentations" of a component.
|
|
13
|
+
- Task involves rendering the same component type with different layouts or props based on data (e.g. variant field or style).
|
|
14
|
+
- User mentions "component variants," "variations," or "multiple renderings."
|
|
15
|
+
|
|
16
|
+
## How to perform
|
|
17
|
+
|
|
18
|
+
- Prefer one component that accepts variant/style via props and branches internally; or multiple map entries if the app uses one key per variant. Use layout/fields/params for variant; register in `.sitecore/component-map.ts`. getComponentData resolves props; align with existing app convention.
|
|
19
|
+
|
|
20
|
+
## Hard Rules
|
|
21
|
+
|
|
22
|
+
- Prefer a single component registration that accepts variant/style data (e.g. params or fields) and branches internally, over multiple map entries for the same logical component unless the app pattern uses separate registrations per variant.
|
|
23
|
+
- Use props (fields, params) from layout to decide variant; do not rely on global state or URL for variant selection when data comes from Sitecore. getComponentData passes the layout-driven props to the component.
|
|
24
|
+
- Register in `.sitecore/component-map.ts` only. If the app uses one key per variant, register each; if one key with variant param, single registration. Follow existing app convention.
|
|
25
|
+
- Keep the component map in sync with src/components/.
|
|
26
|
+
|
|
27
|
+
## Stop Conditions
|
|
28
|
+
|
|
29
|
+
- Stop if the variant model (one registration vs many) is unclear; ask or follow the app's existing pattern.
|
|
30
|
+
- Do not add new component map entries without ensuring layout and editing can provide the corresponding data.
|
|
31
|
+
- Do not assume variant field names (e.g. "variant," "style") without checking the layout definition.
|
|
32
|
+
|
|
33
|
+
## References
|
|
34
|
+
|
|
35
|
+
- [AGENTS.md](../../../AGENTS.md) and content-sdk-component-registration for the map.
|
|
36
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-dictionary-and-i18n
|
|
3
|
+
description: Dictionary and i18n for Pages Router: Next.js i18n in next.config.js (i18n.locales, defaultLocale). Per-request locale is context.locale in getStaticProps/getServerSideProps. Fetch dictionary with client.getDictionary({ site: page.siteName, locale: page.locale }) after getPage. Use when adding or changing translated content or locale behavior.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Dictionary and i18n (Pages Router)
|
|
7
|
+
|
|
8
|
+
This app uses **Next.js built-in i18n**. There is no [locale] in the URL path; locale is provided by Next.js as `context.locale` in getStaticProps/getServerSideProps.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks to add or change translated content, locale, or dictionary.
|
|
13
|
+
- Task involves getDictionary, Next.js i18n, or context.locale.
|
|
14
|
+
- User mentions "dictionary," "i18n," "locale," or "translation."
|
|
15
|
+
|
|
16
|
+
## How to perform
|
|
17
|
+
|
|
18
|
+
- Locales: `next.config.js` → i18n.locales, defaultLocale. In getStaticProps/getServerSideProps use context.locale; after getPage use client.getDictionary({ site: page.siteName, locale: page.locale }). Use a single getDictionary per request. Do not assume locale from headers.
|
|
19
|
+
|
|
20
|
+
## Hard Rules
|
|
21
|
+
|
|
22
|
+
- **Config:** `next.config.js` → `i18n.locales` and `i18n.defaultLocale`. Match (or subset) Sitecore languages.
|
|
23
|
+
- **Per-request locale:** Use `context.locale` in getStaticProps and getServerSideProps. Pass it to `client.getPage(path, { locale: context.locale })`. After fetching the page, use `page.siteName` and `page.locale` (or `context.locale`) for `client.getDictionary({ site: page.siteName, locale: page.locale })` and for getComponentData.
|
|
24
|
+
- Align locales in next.config.js with Sitecore languages (e.g. from sitecore.config.ts defaultLanguage). Use a single client.getDictionary per request for the active site/locale.
|
|
25
|
+
- **Do not** assume locale from headers or a different source; always use `context.locale` and the page's site/locale for Sitecore calls.
|
|
26
|
+
|
|
27
|
+
## Stop Conditions
|
|
28
|
+
|
|
29
|
+
- Stop if adding a new locale without confirming it exists in Sitecore and in next.config.js i18n.
|
|
30
|
+
- Do not duplicate dictionary fetching without a clear need; prefer one fetch per request in the catch-all page.
|
|
31
|
+
|
|
32
|
+
## References
|
|
33
|
+
|
|
34
|
+
- [AGENTS.md](../../../AGENTS.md) for Next.js i18n and getDictionary usage.
|
|
35
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-editing-safe-rendering
|
|
3
|
+
description: Ensures components render safely in XM Cloud editing and preview. Pages Router uses context.preview and context.previewData; use client.getPreview(context.previewData) or getDesignLibraryData(context.previewData) when in preview. Use when making components work in the Sitecore editor or fixing preview/editing behavior.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Editing-Safe Rendering (Pages Router)
|
|
7
|
+
|
|
8
|
+
Ensure components behave correctly in XM Cloud editing, preview, and design library. This app uses **context.preview** and **context.previewData** in getStaticProps/getServerSideProps for editing data.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks about editing, preview, design library, or "component not working in editor."
|
|
13
|
+
- Task involves draft mode, editing chromes, or design library integration.
|
|
14
|
+
- Fixing issues where components render differently or break in editor vs published.
|
|
15
|
+
- User mentions getPreview, getDesignLibraryData, or editing API routes.
|
|
16
|
+
|
|
17
|
+
## How to perform
|
|
18
|
+
|
|
19
|
+
- In [[...path]].tsx getStaticProps/getServerSideProps: check context.preview; when true use isDesignLibraryPreviewData(context.previewData) to choose getDesignLibraryData vs getPreview; otherwise getPage + getDictionary + getComponentData. Editing routes: config uses EditingConfigMiddleware, render uses EditingRenderMiddleware, feaas/render uses FEAASRenderMiddleware; export handler as default.
|
|
20
|
+
|
|
21
|
+
## Hard Rules
|
|
22
|
+
|
|
23
|
+
- In the catch-all page (`src/pages/[[...path]].tsx`), use `context.preview` and `context.previewData`. When in preview, use `isDesignLibraryPreviewData(context.previewData)` to distinguish: if true, use `client.getDesignLibraryData(context.previewData)`; otherwise use `client.getPreview(context.previewData)`. When not in preview, use `getPage(path, { locale: context.locale })` then getDictionary and getComponentData as usual.
|
|
24
|
+
- Do not assume editing/preview context in components that might run in static or non-editing contexts; guard on context.preview in getStaticProps/getServerSideProps.
|
|
25
|
+
- Editing API routes: `src/pages/api/editing/config.ts` uses `EditingConfigMiddleware({ components, metadata }).getHandler()` (import components from `.sitecore/component-map`, metadata from `.sitecore/metadata.json`). `src/pages/api/editing/render.ts` uses `EditingRenderMiddleware().getHandler()`. `src/pages/api/editing/feaas/render.ts` uses `FEAASRenderMiddleware().getHandler()`. Export the handler as default. Do not duplicate client creation; config uses the same component map as the app.
|
|
26
|
+
- Never commit editing secrets; use environment variables and document in .env.example only.
|
|
27
|
+
|
|
28
|
+
## Stop Conditions
|
|
29
|
+
|
|
30
|
+
- Stop and clarify if the issue is preview vs design library vs published; behavior differs.
|
|
31
|
+
- Do not change proxy or middleware order to "fix" editing; editing is driven by API routes and context.previewData.
|
|
32
|
+
- Do not recommend disabling secret validation without explicit user request and warning.
|
|
33
|
+
|
|
34
|
+
## References
|
|
35
|
+
|
|
36
|
+
- [AGENTS.md](../../../AGENTS.md) for data fetching, preview flow, and editing routes.
|
|
37
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-field-usage-image-link-text
|
|
3
|
+
description: Renders Sitecore fields using SDK field components (Text, RichText, Image, Link) with proper validation and fallbacks. Use when rendering content fields or when the user mentions Text, RichText, Image, Link, or field components.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Field Usage (Pages Router)
|
|
7
|
+
|
|
8
|
+
Use SDK field components to render Sitecore fields with proper validation and fallbacks.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks how to render a title, body, image, or link from Sitecore.
|
|
13
|
+
- Task involves displaying content fields, fixing empty/broken images or links, or using RichText/Text/Image/Link components.
|
|
14
|
+
- User mentions "field," "Image," "Link," "Text," "RichText," or "field value."
|
|
15
|
+
|
|
16
|
+
## How to perform
|
|
17
|
+
|
|
18
|
+
- Use SDK field components: `<Text field={fields?.title} />`, `<RichText field={fields?.content} />`, `<Image field={fields?.image} />`, `<Link field={fields?.link} />`. Guard with `fields?.` when optional; use tag prop on Text when needed. Do not hardcode media or link URLs from Sitecore.
|
|
19
|
+
|
|
20
|
+
## Hard Rules
|
|
21
|
+
|
|
22
|
+
- Prefer SDK field components over manual field value extraction: `<Text field={fields?.title} />`, `<RichText field={fields?.content} />`, `<Image field={fields?.image} />`, `<Link field={fields?.link} />`. Use tag prop for Text when needed (e.g. tag="h1").
|
|
23
|
+
- Validate or guard field existence before rendering when fields can be optional (e.g. `fields?.title`). Handle null/undefined and empty fields gracefully.
|
|
24
|
+
- Do not hardcode image or link URLs when the data comes from Sitecore; use the field components or helpers that resolve media/URLs.
|
|
25
|
+
- Follow the app's import pattern (e.g. from lib or components).
|
|
26
|
+
|
|
27
|
+
## Stop Conditions
|
|
28
|
+
|
|
29
|
+
- Stop if the field structure (name or type) is unknown; suggest checking the layout/data shape or asking the user.
|
|
30
|
+
- Do not assume field names (e.g. "title") without confirmation when the template might use different names.
|
|
31
|
+
- Do not commit or log raw field values that might contain PII or secrets.
|
|
32
|
+
|
|
33
|
+
## References
|
|
34
|
+
|
|
35
|
+
- [AGENTS.md](../../../AGENTS.md) for component and Sitecore patterns.
|
|
36
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-graphql-data-fetching
|
|
3
|
+
description: Fetches page, dictionary, and component data via the single Sitecore client. Pages Router: getPage(path, { locale: context.locale }), getDictionary({ site: page.siteName, locale: page.locale }), getComponentData(page.layout, context, components); for SSG use getPagePaths(sites, context?.locales). Use when fetching page or dictionary content.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK GraphQL Data Fetching (Pages Router)
|
|
7
|
+
|
|
8
|
+
All Sitecore data fetching goes through the single client in `src/lib/sitecore-client.ts`. Use getPage, getDictionary, and **getComponentData** in the catch-all page. Path from **extractPath(context)**; locale from **context.locale**.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks how to fetch page data, layout, or dictionary phrases.
|
|
13
|
+
- Task involves getPage, getDictionary, getComponentData, getPreview, getDesignLibraryData, or getPagePaths.
|
|
14
|
+
- User mentions "sitecore client," "Layout Service," "page data," or "dictionary."
|
|
15
|
+
|
|
16
|
+
## How to perform
|
|
17
|
+
|
|
18
|
+
- Use the client from `src/lib/sitecore-client.ts` only. In [[...path]].tsx: use `extractPath(context)` and `context.locale`; call getPage(path, { locale: context.locale }), then getDictionary and getComponentData(page.layout, context, components). For SSG use getPagePaths in getStaticPaths. For preview use context.preview and getPreview/getDesignLibraryData(context.previewData).
|
|
19
|
+
|
|
20
|
+
## Hard Rules
|
|
21
|
+
|
|
22
|
+
- Use the single SitecoreClient instance in `src/lib/sitecore-client.ts`. Do not create a second client or instantiate SitecoreClient elsewhere.
|
|
23
|
+
- **Path and locale:** Use `extractPath(context)` (from `@sitecore-content-sdk/nextjs/utils`) to get the path array; use `context.locale` for locale. Do not assume path or locale from elsewhere.
|
|
24
|
+
- **Catch-all page flow:** In getStaticProps/getServerSideProps: `client.getPage(path, { locale: context.locale })`, then `client.getDictionary({ site: page.siteName, locale: page.locale })` and `client.getComponentData(page.layout, context, components)` for component props. Pass the result to the layout renderer.
|
|
25
|
+
- **SSG:** In getStaticPaths, use `client.getPagePaths(siteNames, context?.locales || [])` where site names come from `.sitecore/sites.json` (e.g. `sites.map((s) => s.name)`). Use `revalidate` in getStaticProps for ISR.
|
|
26
|
+
- **Preview:** Use `context.preview` and `context.previewData`; when in preview, use `client.getPreview(context.previewData)` or `client.getDesignLibraryData(context.previewData)`.
|
|
27
|
+
- Config for the client comes from `sitecore.config.ts`; use environment variables, never hardcode secrets.
|
|
28
|
+
|
|
29
|
+
## Stop Conditions
|
|
30
|
+
|
|
31
|
+
- Stop if the task requires moving the client to another folder without clear requirement; suggest keeping a single instance in lib.
|
|
32
|
+
- Do not add direct GraphQL or fetch to Layout Service bypassing the client unless the task explicitly requires it.
|
|
33
|
+
- Do not fetch in _app; all data flows from [[...path]].tsx.
|
|
34
|
+
|
|
35
|
+
## References
|
|
36
|
+
|
|
37
|
+
- [AGENTS.md](../../../AGENTS.md) for SitecoreClient, getPage, getDictionary, getComponentData, and SSG/SSR.
|
|
38
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-multisite-management
|
|
3
|
+
description: Handles multisite: site resolution, .sitecore/sites.json, and proxy in src/proxy.ts. Pages Router proxy order is fixed: MultisiteProxy → RedirectsProxy → PersonalizeProxy. Use when working with multiple sites or hostnames.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Multisite Management (Pages Router)
|
|
7
|
+
|
|
8
|
+
Site resolution from request (e.g. hostname or cookie); proxy rewrites to internal path. No [locale] in URL; Next.js i18n handles locale separately.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks about multiple sites, hostnames, or site resolution.
|
|
13
|
+
- Task involves .sitecore/sites.json, multisite config, or proxy/middleware for site.
|
|
14
|
+
- User mentions "multisite," "site resolution," "hostname," or "sites.json."
|
|
15
|
+
|
|
16
|
+
## How to perform
|
|
17
|
+
|
|
18
|
+
- Site list: `.sitecore/sites.json`. Proxy in `src/proxy.ts`; ensure `src/middleware.ts` re-exports it if present. Keep chain order: MultisiteProxy → RedirectsProxy → PersonalizeProxy. Exclude /api, _next, static assets in matcher/skip.
|
|
19
|
+
|
|
20
|
+
## Hard Rules
|
|
21
|
+
|
|
22
|
+
- Site list is in `.sitecore/sites.json` (typically generated by Sitecore CLI or deployment). Avoid hand-editing unless the format is known.
|
|
23
|
+
- **Proxy:** Implemented in `src/proxy.ts`. Next.js runs middleware from `middleware.ts` at root or in `src/` — if the app only has `proxy.ts`, add `src/middleware.ts` that re-exports it.
|
|
24
|
+
- **Chain order is fixed:** MultisiteProxy → RedirectsProxy → PersonalizeProxy. **Do not change this order.** MultisiteProxy resolves site from request (hostname or cookie) and rewrites; redirects and personalization run after.
|
|
25
|
+
- **Skip / matcher:** Use the skip callback and matcher to exclude /api, /_next, static files, and health checks so the proxy stays lightweight.
|
|
26
|
+
- Config: sitecore.config.ts → multisite (e.g. enabled, useCookieResolution). Single SitecoreClient; pass resolved site (and locale from context.locale) into getPage, getDictionary, getComponentData.
|
|
27
|
+
|
|
28
|
+
## Stop Conditions
|
|
29
|
+
|
|
30
|
+
- Stop if the user wants to reorder the proxy chain; explain that order is required.
|
|
31
|
+
- Stop if sites.json format is unknown and the change could break resolution; suggest checking SDK docs or CLI output.
|
|
32
|
+
- Do not add a second site resolution mechanism; use the existing proxy and config.
|
|
33
|
+
|
|
34
|
+
## References
|
|
35
|
+
|
|
36
|
+
- [AGENTS.md](../../../AGENTS.md) for proxy chain, skip, and multisite config.
|
|
37
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-route-configuration
|
|
3
|
+
description: Configures routing and layout for Pages Router. Single catch-all at src/pages/[[...path]].tsx; path from extractPath(context), locale from context.locale. Data flows via getStaticProps/getServerSideProps to _app and Layout. Use when changing routing, placeholders, or Layout.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Route Configuration (Pages Router)
|
|
7
|
+
|
|
8
|
+
Single catch-all route; no [site] or [locale] in the URL path. Site is resolved by middleware; locale from Next.js i18n (context.locale).
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks to change routing, add a route, or fix 404/500 behavior.
|
|
13
|
+
- Task involves catch-all route, placeholders, _app, or Layout.tsx.
|
|
14
|
+
- User mentions "[[...path]]," "placeholder," "layout," or "getStaticProps."
|
|
15
|
+
|
|
16
|
+
## How to perform
|
|
17
|
+
|
|
18
|
+
- Single Sitecore page: `src/pages/[[...path]].tsx`. Use `extractPath(context)` for path and `context.locale` for locale. Fetch all data in getStaticProps/getServerSideProps and pass to _app and Layout. Not-found/error: use getErrorPage in getStaticProps or 404.tsx / _error.tsx as appropriate.
|
|
19
|
+
|
|
20
|
+
## Hard Rules
|
|
21
|
+
|
|
22
|
+
- **Single Sitecore page:** `src/pages/[[...path]].tsx`. This is the **only** page that renders Sitecore content. Do not add another page or catch-all for Sitecore content.
|
|
23
|
+
- **Path:** Use `extractPath(context)` (from `@sitecore-content-sdk/nextjs/utils`) to get the path array. **Locale:** Use `context.locale` (Next.js i18n). Do not assume path or locale from headers or elsewhere.
|
|
24
|
+
- **Data flow:** All Sitecore data is fetched in getStaticProps/getServerSideProps in [[...path]].tsx and passed to _app and Layout. Do not fetch Sitecore data in _app.tsx.
|
|
25
|
+
- **Layout:** Layout.tsx renders page layout and placeholders; Providers wrap component props and page context; Bootstrap handles site name and preview mode.
|
|
26
|
+
- Placeholders are rendered by the layout; do not change placeholder names or structure without aligning with Sitecore layout definition.
|
|
27
|
+
- **404 / 500 / _error:** When the catch-all returns `notFound: true`, Next.js renders 404.tsx. For Sitecore-driven error content use `client.getErrorPage(ErrorPage.NotFound)` or `ErrorPage.InternalServerError` in getStaticProps when applicable. _error.tsx is the error boundary; it does not fetch from Sitecore.
|
|
28
|
+
|
|
29
|
+
## Stop Conditions
|
|
30
|
+
|
|
31
|
+
- Stop if the user wants to add a second catch-all or a different URL shape for Sitecore pages; explain single-entry-point constraint.
|
|
32
|
+
- Stop if changing proxy/middleware order; order is fixed (MultisiteProxy → RedirectsProxy → PersonalizeProxy).
|
|
33
|
+
- Do not move or rename the catch-all file without updating all references.
|
|
34
|
+
|
|
35
|
+
## References
|
|
36
|
+
|
|
37
|
+
- [AGENTS.md](../../../AGENTS.md) for exact paths, extractPath, and layout flow.
|
|
38
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-site-setup-and-env
|
|
3
|
+
description: Configures site and environment: sitecore.config.ts, environment variables, default site and language. Use when configuring the app or adding env vars. Document in .env.example only; never commit .env or .env.local.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Site Setup and Environment (Pages Router)
|
|
7
|
+
|
|
8
|
+
Central config in sitecore.config.ts; all secrets and environment-specific values via env vars.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks to configure site, default language, API host, or environment.
|
|
13
|
+
- Task involves sitecore.config.ts, .env, or defaultSite/defaultLanguage.
|
|
14
|
+
- User mentions "config," "environment variables," "API key," or "default site."
|
|
15
|
+
|
|
16
|
+
## How to perform
|
|
17
|
+
|
|
18
|
+
- Edit `sitecore.config.ts` with `defineConfig`; read all secrets and env-specific values from `process.env.*`. Add or change vars in `.env.example` (or `.env.remote.example` / `.env.container.example`) with placeholders; never commit `.env` or `.env.local`.
|
|
19
|
+
|
|
20
|
+
## Hard Rules
|
|
21
|
+
|
|
22
|
+
- Use `sitecore.config.ts` with `defineConfig` from the SDK. Expose api (edge, local), defaultSite, defaultLanguage, editingSecret, multisite, redirects, personalize as needed.
|
|
23
|
+
- All sensitive or environment-specific values must come from environment variables (e.g. process.env.SITECORE_API_KEY). Never hardcode API keys, secrets, or production URLs in source.
|
|
24
|
+
- Document every new or changed env var in `.env.example` (or `.env.remote.example` / `.env.container.example`). Use placeholder or empty value and a short comment; never put real secrets in example files.
|
|
25
|
+
- Never commit `.env` or `.env.local`; they are gitignored. Example files are the source of truth for which vars exist.
|
|
26
|
+
|
|
27
|
+
## Stop Conditions
|
|
28
|
+
|
|
29
|
+
- Stop if the user wants to commit real secrets or production values; insist on env vars and .env.example only.
|
|
30
|
+
- Stop if adding a new env var would require CI or deployment changes without explicit instruction; document the var and note that deployment must set it.
|
|
31
|
+
- Do not edit .next/, node_modules/, or lockfiles unless the task explicitly requires it.
|
|
32
|
+
|
|
33
|
+
## References
|
|
34
|
+
|
|
35
|
+
- [AGENTS.md](../../../AGENTS.md) for boundaries and env rules.
|
|
36
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-sitemap-robots
|
|
3
|
+
description: Sitemap and robots.txt for Pages Router: src/pages/api/sitemap.ts and src/pages/api/robots.ts with SitemapMiddleware(scClient, sites).getHandler() and RobotsMiddleware(scClient, sites).getHandler(). Rewrites in next.config.js. Use when configuring sitemap, robots.txt, or SEO.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Sitemap and Robots (Pages Router)
|
|
7
|
+
|
|
8
|
+
Sitemap and robots.txt are served via **API routes** and rewrites. Use the SDK middleware getHandler pattern and sites from .sitecore/sites.json.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks to add or change sitemap or robots.txt.
|
|
13
|
+
- Task involves SEO, sitemap.xml, or robots route.
|
|
14
|
+
- User mentions "sitemap," "robots," "SEO," or "rewrites."
|
|
15
|
+
|
|
16
|
+
## How to perform
|
|
17
|
+
|
|
18
|
+
- Sitemap: `src/pages/api/sitemap.ts` with `SitemapMiddleware(scClient, sites).getHandler()`; robots: `src/pages/api/robots.ts` with `RobotsMiddleware(scClient, sites).getHandler()`. Use sites from `.sitecore/sites.json`. Add rewrites in next.config.js for /sitemap*.xml and /robots.txt to these API routes.
|
|
19
|
+
|
|
20
|
+
## Hard Rules
|
|
21
|
+
|
|
22
|
+
- **Sitemap:** `src/pages/api/sitemap.ts` — use `new SitemapMiddleware(scClient, sites).getHandler()`. Export the handler. Use `sites` from `.sitecore/sites.json`.
|
|
23
|
+
- **Robots:** `src/pages/api/robots.ts` — use `new RobotsMiddleware(scClient, sites).getHandler()`. Same pattern.
|
|
24
|
+
- **Rewrites:** In `next.config.js`, add rewrites for `/robots.txt` and `/sitemap*.xml` to the corresponding API routes (e.g. `/sitemap.xml` → `/api/sitemap`).
|
|
25
|
+
- Use the same SitecoreClient instance (e.g. from `src/lib/sitecore-client.ts`) as the rest of the app; do not create a dedicated client for sitemap/robots.
|
|
26
|
+
- Avoid hardcoding the site list; use .sitecore/sites.json.
|
|
27
|
+
|
|
28
|
+
## Stop Conditions
|
|
29
|
+
|
|
30
|
+
- Stop if the user wants to serve sitemap/robots from a different origin or with different auth; document and suggest proxy or edge config.
|
|
31
|
+
- Do not add new env vars for sitemap/robots without documenting them in .env.example.
|
|
32
|
+
- Do not change rewrite paths without updating docs and any references.
|
|
33
|
+
|
|
34
|
+
## References
|
|
35
|
+
|
|
36
|
+
- [AGENTS.md](../../../AGENTS.md) for API routes and rewrites.
|
|
37
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-troubleshoot-editing
|
|
3
|
+
description: Troubleshoots XM Cloud editing, preview, and design library for Pages Router. Check context.preview, context.previewData, and editing API routes (config, render, feaas/render). Use when editing or preview does not behave as expected.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Troubleshoot Editing (Pages Router)
|
|
7
|
+
|
|
8
|
+
This skill focuses on **diagnosing** editing, preview, and design library issues. For implementing editing-safe rendering (context.preview, getPreview/getDesignLibraryData, API routes), use the **content-sdk-editing-safe-rendering** skill; the two are complementary (implementation vs. troubleshooting).
|
|
9
|
+
|
|
10
|
+
Diagnose and fix editing, preview, and design library issues without breaking the single client or proxy order. This app uses **context.preview** and **context.previewData** in getStaticProps/getServerSideProps.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
- User reports that editing, preview, or design library is broken or inconsistent.
|
|
15
|
+
- Task involves debugging "not working in editor," missing chromes, or wrong data in preview.
|
|
16
|
+
- User mentions "editing broken," "preview not working," "design library," or "editor issues."
|
|
17
|
+
|
|
18
|
+
## How to perform
|
|
19
|
+
|
|
20
|
+
- Confirm context.preview and context.previewData and correct path/locale (extractPath, context.locale). Verify editing API routes (config, render, feaas/render) are not rewritten (check proxy matcher) and component-map.ts includes the component. Check env (editingSecret, API config) and .env.example documentation.
|
|
21
|
+
|
|
22
|
+
## Hard Rules
|
|
23
|
+
|
|
24
|
+
- **Preview flow:** In [[...path]].tsx getStaticProps/getServerSideProps, use `context.preview` and `context.previewData`. When in preview, use `client.getPreview(context.previewData)` or `client.getDesignLibraryData(context.previewData)`. Ensure path and locale come from extractPath(context) and context.locale when not in preview.
|
|
25
|
+
- Editing API routes: `src/pages/api/editing/config.ts` (EditingConfigMiddleware), `render.ts` (EditingRenderMiddleware), `feaas/render.ts` (FEAASRenderMiddleware) must be reachable and use the same component map (`.sitecore/component-map.ts`) and config as the app. Check proxy `config.matcher` so `/api` is excluded and not rewritten or blocked.
|
|
26
|
+
- Check that the component map includes all components used in the layout; missing registration causes "component not found" in editor.
|
|
27
|
+
- Environment: editingSecret and API config must be set (in env); document in .env.example only. Do not log or commit secrets.
|
|
28
|
+
- Common causes: wrong path/locale passed to getPreview/getDesignLibraryData, or component not registered in component-map.ts.
|
|
29
|
+
|
|
30
|
+
## Stop Conditions
|
|
31
|
+
|
|
32
|
+
- Stop if the fix would require changing CI, deployment, or XM Cloud project settings; suggest the user do that and document the required env or config.
|
|
33
|
+
- Stop if the issue might be in Sitecore (layout, template) rather than the app; suggest checking layout and content in XM Cloud.
|
|
34
|
+
- Do not recommend disabling security (e.g. skipping secret validation) without explicit user request and warning.
|
|
35
|
+
|
|
36
|
+
## References
|
|
37
|
+
|
|
38
|
+
- content-sdk-editing-safe-rendering skill and [AGENTS.md](../../../AGENTS.md) for preview and editing flow.
|
|
39
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-sdk-upgrade-assistant
|
|
3
|
+
description: Guides upgrading @sitecore-content-sdk/* packages: version bumps, breaking changes, migration steps. Use when moving to a newer SDK or package version. Check Content SDK repo CHANGELOG and upgrade guides.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Content SDK Upgrade Assistant (Pages Router)
|
|
7
|
+
|
|
8
|
+
Upgrade @sitecore-content-sdk/* packages safely; follow the Content SDK repo changelog and migration guides.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User asks to upgrade SDK packages, update to a new version, or apply a migration.
|
|
13
|
+
- Task involves version bumps, @sitecore-content-sdk/* dependencies, or breaking changes.
|
|
14
|
+
- User mentions "upgrade," "migration," "new version," or "breaking change."
|
|
15
|
+
|
|
16
|
+
## How to perform
|
|
17
|
+
|
|
18
|
+
- Bump all @sitecore-content-sdk/* to consistent versions; read the Content SDK repo CHANGELOG (and MIGRATION/upgrade docs) for breaking changes and migration steps. Update package.json, run `npm install` and `npm run build`; test editing and preview after upgrade.
|
|
19
|
+
|
|
20
|
+
## Hard Rules
|
|
21
|
+
|
|
22
|
+
- Prefer upgrading all @sitecore-content-sdk/* packages together to a consistent set of versions unless the user requests a partial upgrade. Check peer dependencies and compatibility.
|
|
23
|
+
- Update dependencies in package.json; run `npm install` and `npm run build`. Test editing and preview after upgrade.
|
|
24
|
+
- Read the **Content SDK repository** CHANGELOG (and any MIGRATION.md or upgrade guide) for breaking changes and required code/config updates. Apply migration steps before or with the version bump.
|
|
25
|
+
- Do not edit .next/, node_modules/, or lockfiles unless required for the upgrade. Do not change CI or root tooling unless the task explicitly includes it.
|
|
26
|
+
|
|
27
|
+
## Stop Conditions
|
|
28
|
+
|
|
29
|
+
- Stop if the target version is not specified or unclear; ask or suggest checking the Content SDK CHANGELOG and supported versions.
|
|
30
|
+
- Stop if a breaking change requires product or deployment decisions (e.g. new env vars, config schema); list required changes and ask the user to confirm.
|
|
31
|
+
|
|
32
|
+
## References
|
|
33
|
+
|
|
34
|
+
- Content SDK repo [CHANGELOG](https://github.com/Sitecore/content-sdk/blob/dev/CHANGELOG.md) and upgrade docs.
|
|
35
|
+
- [AGENTS.md](../../../AGENTS.md) for build commands.
|
|
36
|
+
- [Official Content SDK docs](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html).
|
|
@@ -183,6 +183,7 @@ These are the main head-app–specific concepts. Details are in the sections bel
|
|
|
183
183
|
|
|
184
184
|
## References
|
|
185
185
|
|
|
186
|
+
- **Skills.md** — Capability groupings for this app; [.agents/skills/](.agents/skills/) provides each capability as an Agent Skill (when-to-use, hard rules, stop conditions) for tools that support the [Agent Skills](https://agentskills.io) standard.
|
|
186
187
|
- **CLAUDE.md** — Full coding standards and Sitecore patterns for this template.
|
|
187
188
|
- **.cursor/rules/** — Project and Sitecore rules.
|
|
188
189
|
- [Sitecore Content SDK](https://doc.sitecore.com/xmc/en/developers/content-sdk/sitecore-content-sdk-for-xm-cloud.html) — Official docs.
|