Studio Docs

Studio Skills: LLM Prompts for Every Studio Task

Studio ships 107 LLM skills: focused, copy-paste-ready prompts that turn natural-language requests like “install Studio in this app” or “register my Hero component” into actionable steps the LLM walks through with you. Skills work in any LLM-aware editor (Claude Code, Cursor, Windsurf, Cline, Continue) and any chat LLM (Gemini, ChatGPT, Copilot, Claude.ai web).

Starting from a design (Figma / screenshot / mock)? Run decompose-design. It drives the entire build end-to-end:

  1. Emits a machine-readable build sheet (atomics + Layer-2 containers + Sections + proposed Content Type + governance dial + unmapped-fields note).
  2. Offers to scaffold + register components (chains register-component).
  3. Offers to author Sections + Template automatically via API authoring (fastest, no canvas clicks) or canvas automation via Playwright MCP (slower, produces a canvas trail).
  4. Chains verify-setup to close the loop.

Prerequisite mental model: From designs to Sections.

The 107 Skills

The authoritative list lives in skills/skills-index.md, a trigger-phrase table plus a topic map grouping every skill by intent (getting started, install + configure, provisioning, register components, wire preview routes, author sections + templates, bind data, migrate + ship, verify + troubleshoot, concepts). The list here would drift. The index is generated + linted on every change.

Every skill is pull-routed through a single studio router. Only the router’s frontmatter loads on a turn, about 420 tokens for the whole corpus. When it fires, it reads skills-index.md and pulls the one specialist your request needs.

The sixteen categories

The topic map groups every skill by intent. The router matches your request to a category, then reads the one skill it needs.

#CategorySkillsWhat it covers
1Start here6Onboarding, project diagnosis, architecture planning, and the Connected-vs-Freeform decision. Runs before anything changes state
2Install and configure the app8The SDKs, Live Preview, canvas URL, local HTTPS, SDK upgrades, optional MCP servers
3Provision the Contentstack side5CMA authentication, project and stack bootstrap, schema migration, bulk import
4Components: plan and register9Library design, JSX decomposition, registration, design tokens, Figma generation
5Component contracts4The prop, render and CSLP contracts a component must satisfy before Studio can drive it
6Designs to a plan6Turning a Figma file, screenshot or existing content type into a build sheet
7Sections8Building Sections, repeating Sections, exposing props, and driving the canvas UI
8Section Slots and smart containers5Slots and their defaults, repeaters, condition blocks, slot data
9Templates5Connected, Freeform and page-builder Templates, plus pinned entries and queries
10Routes and template URLs3The canvas route, the catch-all, and the CSR-or-SSR decision
11Data binding7External data, your own state, variant aliases, embedding, reference depth
12Author by API: the contract7The composition JSON contract, bindings and encoding
13Author by API: recipes8Worked recipes for repeaters, sections, exposed props, templates, migration
14Ship and verify7Verification, visual parity, deployment, third-party script gating
15Troubleshoot by symptom5Symptom-first routing into canvas, resolution, binding and SSR failures
16Concepts12Explanations of what a thing is, rather than procedures for doing it

For an LLM-ready browsable listing (paste into a chat to bootstrap any model): docs/prompts/ and docs/llms.txt.

The pages under docs/prompts/ mirror the canonical skill sources in skills/src/, byte for byte.

Install Once Per Project

Install the full skill set into your project so the LLM in your editor finds them on every prompt:

curl -fsSL https://studio-documentation.contentstackapps.com/install.sh | sh

The installer then asks which editors should read the skills, ticking the ones it finds in your project:

Which environments should read the Studio skills?

 ❯ [x] Claude Code  .claude/skills       (detected)
   [x] Codex CLI    .agents/skills       (detected)
   [ ] Gemini CLI   .gemini/skills
   [ ] Cursor       .cursor/skills
   [ ] Windsurf     .windsurf/rules
   [ ] Cline        .clinerules
   [ ] Continue     .continue/prompts

  ↑/↓ move · space toggle · a all · n none · enter install · q quit

Move with the arrow keys, toggle with space, press enter to install — tick as many as you like. .agents/skills is the shared Agent Skills directory rather than a Codex-only path: Codex, Gemini CLI, Cursor, Amp, opencode and Goose all read it, so ticking Codex CLI wires up every one of them. The skills are written once into .studio/skills/, and every editor you tick is symlinked at that one copy — so they never drift apart and re-running the command updates all of them together.

Name the editors up front to skip the question (useful in CI, or with no terminal to ask on):

curl -fsSL https://studio-documentation.contentstackapps.com/install.sh | sh -s -- --ide=cursor,claude
curl -fsSL https://studio-documentation.contentstackapps.com/install.sh | sh -s -- --all

Install into a custom directory for any other agent:

curl -fsSL https://studio-documentation.contentstackapps.com/install.sh | sh -s -- --dir=my/custom/path

Host the skills on your own domain

The install script reads STUDIO_SKILLS_BASE_URL so you can serve the skills from anywhere: a fork, an internal mirror, or a staging deploy. A host that needs credentials is handled the same way — the installer asks when the host returns 401, or takes STUDIO_SKILLS_USER / STUDIO_SKILLS_PASSWORD (or STUDIO_SKILLS_AUTH=<user>:<password>) when there is no terminal to ask on.

# Point at a different host
STUDIO_SKILLS_BASE_URL=https://docs.your-company.com/studio \
  curl -fsSL https://docs.your-company.com/studio/install.sh | sh

# Install from a local checkout — no network
STUDIO_SKILLS_LOCAL_DIR=/path/to/composable-studio-docs/docs/prompts \
  sh /path/to/composable-studio-docs/install.sh --ide=claude

The skill list itself is auto-discovered from skills/manifest.txt at the same base URL, no hardcoded skill names in the installer. New skills land automatically next time you re-run.

Use a Skill

After install, use natural language in your editor’s chat:

“Install Studio in this project” loads install-studio, and the LLM walks the install with you

“Register my Hero component” loads register-component, reads your Hero source, writes the registration

“Canvas is blank, help debug” loads the troubleshoot router, classifies the symptom, loads the matching specialist

“Build a Card Grid section iterating related posts” loads build-repeating-section

For chat LLMs without editor integration (Gemini, ChatGPT, Claude.ai web), open the matching skill page below and paste the prompt body directly.

All Skills: Full Listing

Each links to the full prompt text. Skills are alphabetical. The topic map in the skills index groups them by intent.

Orchestrators (entry-point skills that route to specialists)

  • analyze-project-fit: pre-flight check before installing Studio in an existing project
  • byoc-end-to-end: bring-your-own-components walkthrough: register, build sections, build templates, then ship
  • start-here-zero-knowledge: zero-knowledge onboarding for first-time users
  • studio-tour: intent-driven walkthrough that delegates to specialist skills at each step
  • troubleshoot: symptom router for the five troubleshoot specialists

Setup

Author

Troubleshoot

Concept on-ramps (orientation before the action skills)

Build artifacts + ops

Why Skills (over Copy-Paste Templates)

A skill is a prompt with a contract: it expects the LLM to ask for specific inputs, follow a verified step sequence, and run acceptance checks before claiming success. Each skill is grounded in the Studio SDK source. Symbols mentioned actually exist. Recipes match what the SDK does at runtime.

That contract is what makes the skills composable: studio-tour chains analyze-project-fit, install-studio, register-component, setup-section-preview, setup-template-preview-routes, configure-studio, and verify-setup, because each leaf skill has clear preconditions and outputs.

See Also