recipe-authoring
Author Sitecore recipes (.recipe.ts) that compile to templates + renderings — map a React/SXA component to a component-template, model data with…
Skill by Sitecore-Studio-Labs
Chalk Labs
Need help deploying recipe-authoring?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/sitecore-studio-labs-recipe-authoring
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, data, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/recipe-authoring
What's inside
- Skill name
recipe-authoring- Description
- Author Sitecore recipes (.recipe.ts) that compile to templates + renderings — map a React/SXA component to a component-template, model data with content-templates, define enums, group with component-sections. Use when creating or editing *.recipe.ts files, turning a component into a Sitecore rendering, or asking "how do I make a recipe / why doesn't my component show up in Pages".
- License
- MIT
- Instructions
- 266 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Recipe Authoring
A **recipe** is a TypeScript object describing one thing you want in Sitecore.
`scai provision recipe push` compiles the set to idempotent Authoring operations
and applies them. Re-running is a no-op.
## Quick start
```sh
# Validate offline — compiles the whole SET (resolves section/treelist/enum refs)
# and emits the cross-recipe aggregates (available renderings, placeholder settings)
scai provision recipe compile -n <env>
scai provision recipe diff -n <env> # read-only diff vs the tenant
scai provision recipe push -n <env> --what-if # plan, no writes
scai provision recipe push -n <env> --allow-write
scai provision recipe roots -n <env> # show the derived tree paths
```
Import the kind type straight from the package — defaulted fields are optional, so
you write only what you mean:
```ts
import type { ComponentTemplateRecipe } from "@sitecoreai-labs/sitecoreai-cli/recipe";
export default {
kind: "component-template",
schemaVersion: "1" /* … */,
} satisfies ComponentTemplateRecipe;
```
Stable kinds on `/recipe`: `ComponentTemplateRecipe`, `ContentTemplateRecipe`,
`EnumerationRecipe`, `ComponentSectionRecipe`, `DesignParametersTemplateRecipe`,
`PageTemplateRecipe`, `VariantRecipe`. Composition kinds (`PartialDesign`,
`PageDesign`, `Site`, `ContentItem`, `Dictionary`) live on `/recipe/unstable`.
## Authoring checklist
1. **One recipe per thing.** Each placeable component → one `component-template`.
Each reusable data shape → one `content-template`. Each value list → one
`enumeration`.
2. **Identity.** `handle: "<kebab-name>@<major>"` (e.g. `hero@1`) — load-bearing,
seeds every GUID; never rename to change meaning, bump `@2` for a new identity.
`name` **must match the component-map key / SDK component export** (e.g. `Hero`).
`displayName` is the Title-Case label authors see.
3. **Props → `fields`.** Map each editable prop to a field shape (table below) and
override with `sitecore: { type, required, hint, section, sortOrder, defaultValue }`.
Group with `section` ("Content", "Action", "Style") and order with `sortOrder`
(100-step increments; styles at 200+).
4. **Style / layout choices → `params`, not `fields`.** A `color`/`size`/`position`
prop is a rendering parameter. Use `shape: "enum"` with either inline
`values: [...]` + `sitecore: { type: "droplist" }`, or `sitecore: { enumHandle:
"<enum>@1" }` pointing at a shared `enumeration` recipe. Extract shared param sets
into a `_params.ts` module and spread them.
5. **Repeating lists → a `content-template` + a `reference` field.** Don't hard-code
arrays. Model the item as a `content-template`, then a `reference` (multiple)
field with `sitecore: { source: { kind: "filter", types: ["<item>@1"] } }`
(a Treelist). Optionally also list the handle in `insertOptions` so authors can
create the items as children of the datasource (child-item pattern).
6. **Variants** are PascalCase and map 1:1 to React named exports (`Default`,
`FullWidth`). The SDK looks them up case-sensitively.
7. **Containers vs leaves.** A wrapper that holds other renderings declares
`placeholders: [{ key, allowedComponents: [...] }]` and renders
`<Placeholder name={key} />`. A leaf lists the placeholder keys it can drop into
in `placedIn: ["headless-main", …]`.
8. **⚠️ Every component-template MUST reference a `component-section`** via
`section: { handle: "<section>@1" }`. Without it, the available-renderings
aggregate skips the component and **it never appears in the Pages component
list** — even though the rendering exists. Author one `ComponentSectionRecipe`
per group and point every component at it.
9. **Cross-references resolve by handle** at compile time (deterministic GUIDs);
`compile` fails `INPUT_INVALID` on an unresolved handle.
10. **Organize + verify.** Recipes must live in a **subdirectory** of the glob
(`recipes/**/*.recipe.ts` does not match files at the glob root). Keep shared
enums/sections/params in their own folders. Always `compile` before `push`.
## Field shapes
| Prop (React) | `shape` | Default Sitecore type | Notes |
| ----------------------- | ------------------------------ | --------------------- | ------------------------------------------------------------------------ |
| `string` heading/label | `text` | Single-Line Text | |
| rich body / `ReactNode` | `richText` | Rich Text | |
| `imageSrc` + `imageAlt` | `image` | Image | |
| `{ label, href }` | `link` | General Link | |
| `boolean` flag | `boolean` | Checkbox | |
| number | `number` / `integer` | Number / Integer | |
| `"a" \| "b"` union | `enum` | Droplink | inline → set `sitecore.type: "droplist"`; shared → `sitecore.enumHandle` |
| list of items | `reference` (`multiple: true`) | Treelist | `sitecore.source: { kind: "filter", types: ["<item>@1"] }` |
`reference` with `multiple: false` → Droplink. Override any default with
`sitecore.type`.
## Examples
**Component template** — fields + params + treelist + variants + section + placement:
```ts
import type { ComponentTemplateRecipe } from "@sitecoreai-labs/sitecoreai-cli/recipe";
export default {
kind: "component-template",
schemaVersion: "1",
handle: "hero@1",
name: "Hero", // = component-map key / React export
displayName: "Hero",
section: { handle: "sodra@1" }, // ← required for it to appear in Pages
fields: [
{
name: "Title",
shape: "richText",
sitecore: { required: true, section: "Content", sortOrder: 100 },
},
{ name: "Intro", shape: "richText", sitecore: { section: "Content", sortOrder: 200 } },
{
name: "Buttons",
shape: "reference",
multiple: true,
sitecore: { source: { kind: "filter", types: ["nav-link@1"] } },
},
],From Sitecore-Studio-Labs/sitecoreai-cli, MIT.
More from Sitecore-Studio-Labs/sitecoreai-cli
- 0.564score
serialization-performance
Sitecore-Studio-Labs
Optimizes serialization performance using include/exclude, field filters, and watch options.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
config-bootstrap
Sitecore-Studio-Labs
Bootstrap and validate sitecoreai.cli.json configuration.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
serialization-conflict-resolution
Sitecore-Studio-Labs
Resolves serialization conflicts and move/rename/update issues safely.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
codebase-conventions
Sitecore-Studio-Labs
Non-negotiable codebase conventions for the scai CLI — module boundaries, error contract, credential handling, agent contract, quality gates.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
design-principles
Sitecore-Studio-Labs
Golden principles for code design — research-first culture, prefer libraries, validate at boundaries, right abstraction level.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
serialization-migration-bootstrap
Sitecore-Studio-Labs
Bootstraps new serialization modules and migrations from existing items.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
serialization-ops
Sitecore-Studio-Labs
Run serialization pull/push/diff/validate/watch workflows.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
review-harness
Sitecore-Studio-Labs
Audit harness health — memory staleness, skill drift, and convention coverage gaps.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
access-and-policy
Sitecore-Studio-Labs
Navigate scai's access model — the workspace policy allowlist and the credential/keychain patterns.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
agent-mode
Sitecore-Studio-Labs
Run the CLI safely in non-interactive or CI environments.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
deploy-ops
Sitecore-Studio-Labs
Run Deploy API commands for projects, environments, and deployments.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
environment-setup
Sitecore-Studio-Labs
Configure authentication for environments (deploy token or client credentials).
SkillBFreshness: B★ 3Claude Code +9
Signals
- Stars
- 3
- Forks
- 0
- Open issues
- 4
- Last commit (this folder)
- Jun 23, 2026 (4 months ago)
- Last release
- Aug 4, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Sitecore-Studio-Labs
- 0.564score
config-bootstrap
Sitecore-Studio-Labs
Bootstrap and validate sitecoreai.cli.json configuration.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
review-harness
Sitecore-Studio-Labs
Audit harness health — memory staleness, skill drift, and convention coverage gaps.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
codebase-conventions
Sitecore-Studio-Labs
Non-negotiable codebase conventions for the scai CLI — module boundaries, error contract, credential handling, agent contract, quality gates.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
design-principles
Sitecore-Studio-Labs
Golden principles for code design — research-first culture, prefer libraries, validate at boundaries, right abstraction level.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
serialization-conflict-resolution
Sitecore-Studio-Labs
Resolves serialization conflicts and move/rename/update issues safely.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
access-and-policy
Sitecore-Studio-Labs
Navigate scai's access model — the workspace policy allowlist and the credential/keychain patterns.
SkillBFreshness: B★ 3Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get recipe-authoring running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
recipe-authoring skill. Agent Mart. https://agentmart.dev/skills/sitecore-studio-labs-recipe-authoring (last updated 2026-10-24)