Skip to content
Agentmart
Submit a tool

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

IndexedMIT★ 3
Write a review

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.

Book a call

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.

We use your email only for this newsletter. Privacy

About

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

Use cases: frontend, data, writing

No 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

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

More from Sitecore-Studio-Labs

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.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying recipe-authoring?

CallGet help
Cite this page

recipe-authoring skill. Agent Mart. https://agentmart.dev/skills/sitecore-studio-labs-recipe-authoring (last updated 2026-10-24)