Agent skill

Multi Surface Render

by yonatangross in yonatangross/orchestkit

Multi-surface rendering with json-render — one JSON spec produces React web, Next.js, React Native, Ink terminal UIs, PDFs, emails, Remotion videos, OG images, and 3D scenes.

MITAuto-check passedMedia & Creative

Install Multi Surface Render

skills CLI
$ npx skills add yonatangross/orchestkit --skill multi-surface-render -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install yonatangross/orchestkit multi-surface-render --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/skills/multi-surface-render .claude/skills/multi-surface-render && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
multi-surface-render
GitHub stars
288
Token cost
~4k tokens
SKILL.md length
1,088 words
Files
14 (incl. references)
Skills in repo
107
Repo updated
First seen
Licence
MIT

At a glance

Multi-surface rendering with json-render — one JSON spec produces React web, Next.js, React Native, Ink terminal UIs, PDFs, emails, Remotion videos, OG images, and 3D scenes.

  • Works in 4 steps: One catalog — Zod-typed component… → One spec — flat-tree JSON/YAML… → Many registries — each surface maps… → …
  • Generating output for several platforms
  • SKILL.md covers Quick Reference, How Multi-Surface Rendering…, Quick Start — Same Catalog,… and Decision Matrix — When to Use…, plus 8 more sections
  • Calls bash

What it does

Multi Surface Render is an agent skill from yonatangross/orchestkit. Multi-surface rendering with json-render — one JSON spec produces React web, Next.js, React Native, Ink terminal UIs, PDFs, emails, Remotion videos, OG images, and 3D scenes. Covers renderer target selection, registry mapping, and platform APIs (renderToBuffer, renderToStream, renderToFile). Use when generating output for several platforms or creating PDF reports, email templates, demo videos, or social images from one component spec.

Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 15 other files, including reference files (for example `references/ork-delta.md`, `references/upstream-email.md` and `references/upstream-image.md`). Compatibility notes: Claude Code 2.1.277+

It sits in Media & Creative, covering Video production, Social media graphics and PDF. It works with React, Next.js, Remotion and React Native. The repository describes itself as: The Complete AI Development Toolkit for Claude Code. 106 skills, 36 agents, 171 hooks. Install ork for stable (v9.x), or ork-alpha for the v10 line, which ships daily. The licence is MIT.

When your agent uses it

  • Generating output for several platforms
  • Creating PDF reports
  • Email templates
  • Social images from one component spec

Example prompts

  • “/multi-surface-render”

Requirements

  • Compatibility (from SKILL.md): Claude Code 2.1.277+

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. One catalog — Zod-typed component definitions shared across all surfaces
  2. One spec — flat-tree JSON/YAML describing the UI structure
  3. Many registries — each surface maps catalog types to its own component implementations
  4. Many renderers — each package renders the spec using its registry

What it can do on your machine

Read from SKILL.md and the folder at commit 1f8d8f3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com
    • react-pdf.org
    • remotion.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Claude Code 2.1.277+

    From compatibility in the SKILL.md frontmatter.

Context cost

Multi Surface Render loads about 4k tokens when it runs, and up to ~9.3k if it reads all its reference files. Until then it costs about 115 tokens; SKILL.md has 1,088 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~115
When it runs · the whole SKILL.md, loaded when a task matches
~4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~9.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from yonatangross/orchestkit at commit 1f8d8f3, republished under its MIT licence (© yonatangross). 1,088 words, ~4,008 tokens.

Download SKILL.mdSave it as .claude/skills/multi-surface-render/SKILL.md (or your agent's skills folder). This skill also uses 13 other files; get the full folder from GitHub.
name
multi-surface-render
description
Multi-surface rendering with json-render — one JSON spec produces React web, Next.js, React Native, Ink terminal UIs, PDFs, emails, Remotion videos, OG images, and 3D scenes. Covers renderer target selection, registry mapping, and platform APIs (renderToBuffer, renderToStream, renderToFile). Use when generating output for several platforms or creating PDF reports, email templates, demo videos, or social images from one component spec.
compatibility
Claude Code 2.1.277+
user-invocable
false
disable-model-invocation
false
context
inherit
metadata.category
frontend
metadata.upstream-package
@json-render/core
metadata.upstream-version-tested
0.21.0
metadata.version
1.1.0
metadata.author
OrchestKit
metadata.complexity
medium
metadata.tags
json-render, multi-surface, pdf, email, remotion, video, image, react, rendering, ink, nextjs

Upstream version reference: @json-render/core 0.21.0 (2026-09-30).

Multi-Surface Rendering with json-render

Define once, render everywhere. A single json-render catalog and spec can produce React web UIs, PDF reports, HTML emails, Remotion demo videos, and OG images — each surface gets its own registry that maps catalog types to platform-native components.

Quick Reference

CategoryRulesImpactWhen to Use
Target Selection1HIGHChoosing which renderer for your use case
React Renderer1MEDIUMWeb apps, SPAs, dashboards
PDF & Email Renderer1HIGHReports, documents, notifications
Video & Image Renderer1MEDIUMDemo videos, OG images, social cards
Registry Mapping1HIGHPlatform-specific component implementations

Total: 5 rules across 5 categories

How Multi-Surface Rendering Works

  1. One catalog — Zod-typed component definitions shared across all surfaces
  2. One spec — flat-tree JSON/YAML describing the UI structure
  3. Many registries — each surface maps catalog types to its own component implementations
  4. Many renderers — each package renders the spec using its registry

The catalog is the contract. The spec is the data. The registry is the platform-specific implementation.

Quick Start — Same Catalog, Different Renderers

Shared Catalog (used by all surfaces)
typescript
import { defineCatalog } from '@json-render/core'
import { schema } from '@json-render/react/schema'
import { z } from 'zod'

export const catalog = defineCatalog(schema, {
  components: {
    Heading: {
      props: z.object({
        text: z.string(),
        level: z.enum(['h1', 'h2', 'h3']),
      }),
      children: false,
    },
    Paragraph: {
      props: z.object({ text: z.string() }),
      children: false,
    },
    StatCard: {
      props: z.object({
        label: z.string(),
        value: z.string(),
        trend: z.enum(['up', 'down', 'flat']).optional(),
      }),
      children: false,
    },
  },
})
Render to Web (React)
tsx
import { Renderer } from '@json-render/react'
import { webRegistry } from './registries/web'

// webRegistry comes from `defineRegistry(catalog, { components })`.
// RendererProps is { spec, registry, loading?, fallback? } — no catalog prop.
export const Dashboard = ({ spec }) => (
  <Renderer spec={spec} registry={webRegistry} />
)
Render to PDF
typescript
import { renderToBuffer, renderToFile } from '@json-render/react-pdf'
import { pdfRegistry } from './registries/pdf'

// Buffer for HTTP response. PDF options are { registry?, state?, handlers? }.
// includeStandard is an EMAIL option, not a PDF one (see references/upstream-pdf.md).
const buffer = await renderToBuffer(spec, { registry: pdfRegistry })

// Direct file output — renderToFile(spec, filePath, options?)
await renderToFile(spec, './output/report.pdf', { registry: pdfRegistry })
Render to Email
typescript
import { renderToHtml } from '@json-render/react-email'
import { emailRegistry } from './registries/email'

const html = await renderToHtml(spec, { registry: emailRegistry })
await sendEmail({ to: user.email, subject: 'Weekly Report', html })
Render to OG Image (Satori)
typescript
import { renderToSvg, renderToPng } from '@json-render/image'
import { imageRegistry } from './registries/image'

const png = await renderToPng(spec, {
  registry: imageRegistry,
  width: 1200,
  height: 630,
})
Render to Video (Remotion)
tsx
// Verified 2026-07-31 against @json-render/remotion@0.19.0: the export is
// `Renderer` and its props are { spec, components }. fps and durationInFrames
// belong on Remotion's own Composition, not on this renderer.
import { Renderer } from '@json-render/remotion'
import { remotionComponents } from './registries/remotion'

export const DemoVideo = () => (
  <Renderer spec={spec} components={remotionComponents} />
)
Render to Terminal (Ink, 0.15+)
tsx
import { render } from 'ink'
import { Renderer } from '@json-render/ink'
import { catalog } from './catalog'
import { inkRegistry } from './registries/ink'

render(<Renderer spec={spec} catalog={catalog} registry={inkRegistry} />)

Useful for /ork:* CLI dashboards and streaming agent chat interfaces — ships 20+ Ink-native components (Box, Text, Spinner, Table, Markdown, Progress, etc.).

Render to Next.js App (0.16+)
typescript
// createNextApp lives on the /server subpath, not the package root.
import { createNextApp } from '@json-render/next/server'

const { getPageData, generateMetadata, generateStaticParams } = createNextApp({
  spec,                        // NextAppSpec: routes keyed by Next.js URL patterns
  loaders: { getPost },        // server-side data loaders referenced by route.loader
})

It does not scaffold a project on disk. createNextApp returns the server-side pieces you re-export from a catch-all route, and the page itself renders through PageRenderer:

tsx
// app/[[...slug]]/page.tsx
export { generateMetadata, generateStaticParams }

export default async function Page({ params }) {
  const data = await getPageData(params)
  if (!data) notFound()
  return <PageRenderer {...data} registry={webRegistry} />
}

A spec describes a route tree (pages, layouts, metadata, loading and error states), not just a component tree.

Decision Matrix — When to Use Each Target

TargetPackageWhen to UseOutput
React@json-render/reactWeb apps, SPAsJSX
Next.js@json-render/next (0.16+)Full apps: routes, layouts, SSR, metadataNext.js app
Vue@json-render/vueVue projectsVue components
Svelte@json-render/svelteSvelte projectsSvelte components
Svelte+shadcn@json-render/shadcn-svelte (0.16+)36-component Svelte 5 catalogSvelte + Tailwind
React Native@json-render/react-nativeMobile apps (25+ components)Native views
Terminal@json-render/ink (0.15+)CLI UIs, TUIs, streaming chatInk (terminal)
PDF@json-render/react-pdfReports, documentsPDF buffer/file
Email@json-render/react-emailNotifications, digestsHTML string
Remotion@json-render/remotionDemo videos, marketingMP4/WebM
Image@json-render/imageOG images, social cardsSVG/PNG (Satori)
YAML@json-render/yaml (0.14+)Token optimization, streaming parserYAML string
MCP@json-render/mcpClaude/Cursor/ChatGPT conversationsSandboxed iframe
3D@json-render/react-three-fiber3D scenes (19 components, verified 2026-07-31; roster lives upstream)Three.js canvas
Codegen@json-render/codegenSource code from specsTypeScript/JSX

All @json-render/* renderers are verified against 0.20.0 (@json-render/core). The 0.19.0 to 0.20.0 export surface went 84 to 87 symbols with zero removals, so every API documented here still resolves. 0.20.0 adds named slots (slots?: Record<string, string[]> on UIElement, with catalogs declaring slots: ["default", "header", ...]), nested repeats via an item-relative repeat.statePath of the form {"$item": "employees"}, and item-scoped visibility so a repeat plus visible: {"$item": ...} on the same element filters items instead of failing. One breaking change, which no rule in this skill uses: ActionExecutionContext.executeAction now takes an ActionBinding rather than a bare action name, which only affects hand-written custom renderer bridges.

Load rules/target-selection.md for detailed selection criteria and trade-offs.

Upstream coverage (do not restate)

This skill wraps @json-render/*. Vendor documentation is fetched, not repeated. What survives here is the house delta: references/ork-delta.md plus the five rules.

TopicSource
Full renderer signatures and option objects (renderToBuffer / renderToFile / renderToStream, renderToHtml / renderToPlainText, renderToSvg / renderToPng, Remotion exports)references/upstream-pdf.md, upstream-email.md, upstream-image.md, upstream-remotion.md (vendored verbatim; re-sync with bash scripts/sync-vercel-skills.sh)
Standard component rosters per target (Document, Page, Table, email Section / Row / Column, Remotion transitions and effects)the same four vendored references/upstream-*.md files
<Renderer> props, defineRegistry, useUIStreamhttps://github.com/vercel-labs/json-render/tree/main/packages/react. The 0.19 prop-shape correction (no catalog prop, no top-level onError) is a house finding and stays in rules/react-renderer.md
Email client constraints: 600px container, table layout, inline styles, absolute image URLsreferences/upstream-email.md ("Email Best Practices")
Satori CSS support matrixhttps://github.com/vercel/satori. The working subset this skill designs image registries against stays in rules/video-image-renderer.md
react-pdf style property support (flexbox set, no grid)https://react-pdf.org/styling
Remotion render cost and cloud renderinghttps://www.remotion.dev/docs/lambda
Per-package capability and output matrixthe house target picks stay in the Decision Matrix above and in rules/target-selection.md; per-package detail at https://github.com/vercel-labs/json-render

Read references/ork-delta.md before writing renderer code: it carries the API-drift rule, the Remotion and PDF latency budgets, and the PDF / React Native registry layout ceiling.

Show full SKILL.md (377 more words)Show less

PDF Renderer — Reports and Documents

The @json-render/react-pdf package renders specs to PDF using react-pdf under the hood. Three output modes: buffer, file, and stream.

typescript
import { renderToBuffer, renderToFile, renderToStream } from '@json-render/react-pdf'

// In-memory buffer (for HTTP responses, S3 upload)
// PDF options are { registry?, state?, handlers? }, no catalog field
const buffer = await renderToBuffer(spec, { registry: pdfRegistry })
res.setHeader('Content-Type', 'application/pdf')
res.send(buffer)

// Direct file write — renderToFile(spec, filePath, options?)
await renderToFile(spec, './output/report.pdf', { registry: pdfRegistry })

// Streaming (for large documents)
const stream = await renderToStream(spec, { registry: pdfRegistry })
stream.pipe(res)

Load rules/pdf-email-renderer.md for PDF registry patterns and email rendering.

Image Renderer — OG Images and Social Cards

The @json-render/image package uses Satori to convert specs to SVG, then optionally to PNG. Designed for server-side generation of social media images.

typescript
import { renderToSvg, renderToPng } from '@json-render/image'

// SVG output (smaller, scalable)
const svg = await renderToSvg(spec, {
  registry: imageRegistry,
  width: 1200,
  height: 630,
})

// PNG output (universal compatibility)
const png = await renderToPng(spec, {
  registry: imageRegistry,
  width: 1200,
  height: 630,
})

Load rules/video-image-renderer.md for Satori constraints and Remotion composition patterns.

Registry Mapping — Same Catalog, Platform-Specific Components

Each surface needs its own registry. The registry maps catalog types to platform-specific component implementations while the catalog and spec stay identical.

typescript
// Web registry — uses HTML elements
const webRegistry = {
  Heading: ({ text, level }) => {
    const Tag = level // h1, h2, h3
    return <Tag className="font-bold">{text}</Tag>
  },
  StatCard: ({ label, value, trend }) => (
    <div className="rounded border p-4">
      <span className="text-sm text-gray-500">{label}</span>
      <strong className="text-2xl">{value}</strong>
    </div>
  ),
}

// PDF registry — uses react-pdf primitives
import { Text, View } from '@react-pdf/renderer'
const pdfRegistry = {
  Heading: ({ text, level }) => (
    <Text style={{ fontSize: level === 'h1' ? 24 : level === 'h2' ? 18 : 14 }}>
      {text}
    </Text>
  ),
  StatCard: ({ label, value }) => (
    <View style={{ border: '1pt solid #ccc', padding: 8 }}>
      <Text style={{ fontSize: 10, color: '#666' }}>{label}</Text>
      <Text style={{ fontSize: 18, fontWeight: 'bold' }}>{value}</Text>
    </View>
  ),
}

Load rules/registry-mapping.md for registry creation patterns and type safety.

Rule Details

Target Selection

Decision criteria for choosing the right renderer target.

RuleFileKey Pattern
Target Selectionrules/target-selection.mdUse case mapping, output format constraints
React Renderer

Web rendering with the <Renderer> component.

RuleFileKey Pattern
React Rendererrules/react-renderer.md<Renderer> component, streaming, error boundaries
PDF & Email Renderer

Server-side rendering to PDF buffers/files and HTML email strings.

RuleFileKey Pattern
PDF & Emailrules/pdf-email-renderer.mdrenderToBuffer, renderToFile, renderToHtml
Video & Image Renderer

Remotion compositions and Satori image generation.

RuleFileKey Pattern
Video & Imagerules/video-image-renderer.mdRenderer (Remotion), renderToPng, renderToSvg
Registry Mapping

Creating platform-specific registries for a shared catalog.

RuleFileKey Pattern
Registry Mappingrules/registry-mapping.mdPer-platform registries, type-safe mapping

Key Decisions

DecisionRecommendation
PDF libraryUse @json-render/react-pdf (react-pdf), not Puppeteer screenshots
Email renderingUse @json-render/react-email (react-email), not MJML or custom HTML
OG imagesUse @json-render/image (Satori), not Puppeteer or canvas
VideoUse @json-render/remotion (Remotion), not FFmpeg scripts
Registry per platformAlways separate registries; never one registry for all surfaces
Catalog sharingOne catalog definition shared via import across all registries

Common Mistakes

  1. Building separate component trees for each surface — defeats the purpose; share the catalog and spec
  2. Using Puppeteer to screenshot React for PDF generation — slow, fragile; use native react-pdf rendering
  3. One giant registry covering all platforms — impossible since PDF uses <View>/<Text>, web uses <div>/<span>
  4. Forgetting Satori limitations — no CSS grid, limited flexbox; design image registries with these constraints
  5. Duplicating catalog definitions per surface — one catalog, many registries; the catalog is the contract
  • ork:json-render-catalog — Catalog definition patterns with Zod, shadcn components
  • ork:demo-producer — Video production pipeline using Remotion
  • ork:mcp-visual-output — Rendering specs in Claude/Cursor via MCP

© yonatangross, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 13 other files (references) in src/skills/multi-surface-render of yonatangross/orchestkit.

  • SKILL.md
  • references/ork-delta.md
  • references/upstream-email.md
  • references/upstream-image.md
  • references/upstream-pdf.md
  • references/upstream-remotion.md
  • rules/_sections.md
  • rules/_template.md
  • rules/pdf-email-renderer.md
  • rules/react-renderer.md
  • rules/registry-mapping.md
  • rules/target-selection.md
  • rules/video-image-renderer.md
  • test-cases.json

Open the folder on GitHubat commit 1f8d8f3

Compare with similar skills

Multi Surface Render next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Multi Surface Render compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Multi Surface Render this skillyonatangross/orchestkit288—~4kAutomated safety check: PassMIT
Remotion Best Practiceslyonjs/shortvid.io14732 repos~1kAutomated safety check: PassMIT
Disney Animation Rule Skillvibe-motion/skills1.3k—~1.5kAutomated safety check: PassNone
UI UX Pro Maxsaoudi-h/solar-icons18218 repos~11kAutomated safety check: NotesCustom licence
Create Remotion GeistMarve10s/Better-Fullstack752—~1.4kAutomated safety check: PassMIT
Better Designmarvkr/better-design252—~1.2kAutomated safety check: PassMIT

Similar skills

  • Remotion Best Practices

    lyonjs/shortvid.io

    Best practices for Remotion - Video creation in React. An agent skill from lyonjs/shortvid.io.

    147 GitHub starsUsed in 32 repos~1k tokens
    Media & CreativeAuto-check passed
  • Disney Animation Rule Skill

    vibe-motion/skills

    Apply Disney's 12 principles as practical design and engineering rules for procedural animation.

    1.3k GitHub stars~1.5k tokensUpdated 2 days ago
    Media & CreativeAuto-check passed
  • UI UX Pro Max

    saoudi-h/solar-icons

    UI/UX design intelligence for web and mobile. An agent skill from saoudi-h/solar-icons.

    182 GitHub starsUsed in 18 repos~11k tokens
    Frontend & DesignAuto-check: notes
  • Create Remotion Geist

    Marve10s/Better-Fullstack

    Create Remotion videos using the Geist design system aesthetic.

    752 GitHub stars~1.4k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Better Design

    marvkr/better-design

    Build, improve, and review production interfaces with the Better Design MCP.

    252 GitHub stars~1.2k tokensUpdated 15 days ago
    Frontend & DesignAuto-check passed
  • Typegpu

    software-mansion-labs/skills

    TypeGPU is type-safe WebGPU in TypeScript. An agent skill from software-mansion-labs/skills.

    291 GitHub starsUsed in 2 repos~5.6k tokens
    Game DevelopmentAuto-check passed

More from yonatangross/orchestkit

All 107 skills in this repo
  • API Design

    yonatangross/orchestkit

    API contract design for REST and GraphQL, covering resource shape, URL and header versioning with deprecation windows, RFC 9457 Problem Details error handling, and OpenAPI specs.

    288 GitHub stars~2.9k tokensUpdated yesterday
    Auto-check passed
  • Architecture Decision Record

    yonatangross/orchestkit

    ADR templates in the Nygard format with context, decision, consequences, and alternatives.

    288 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Audit Full

    yonatangross/orchestkit

    Single-pass codebase analysis leveraging a 1M-token context window for comprehensive security scanning, architecture review, and dependency auditing.

    288 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check: notes
  • Code Review Playbook

    yonatangross/orchestkit

    Structured review processes, conventional comments, language-specific checklists, and feedback templates.

    288 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Create PR

    yonatangross/orchestkit

    Creates GitHub pull requests with pre-flight validation, conventional title formatting, and structured summary generation.

    288 GitHub stars~4.5k tokensUpdated yesterday
    Auto-check: notes
  • Explore

    yonatangross/orchestkit

    Multi-angle codebase exploration spawning 3-5 parallel agents for code structure, data flow, architecture patterns, and health assessment.

    288 GitHub stars~3.9k tokensUpdated yesterday
    Auto-check: notes

Questions about Multi Surface Render

What does Multi Surface Render do?

Multi-surface rendering with json-render — one JSON spec produces React web, Next.js, React Native, Ink terminal UIs, PDFs, emails, Remotion videos, OG images, and 3D scenes. Multi Surface Render is an agent skill from yonatangross/orchestkit.js, React Native, Ink terminal UIs, PDFs, emails, Remotion videos, OG images, and 3D scenes.

When should I use Multi Surface Render?

Multi Surface Render fits situations like: generating output for several platforms; creating PDF reports; email templates; social images from one component spec.

How do I install Multi Surface Render in Claude Code?

Run `npx skills add yonatangross/orchestkit --skill multi-surface-render -a claude-code`. Or copy the skill folder (src/skills/multi-surface-render in yonatangross/orchestkit) into .claude/skills/multi-surface-render in your project. Claude Code loads it when a task matches its description.

How do I install Multi Surface Render in Codex?

Run `npx skills add yonatangross/orchestkit --skill multi-surface-render -a codex`. Or copy the skill folder (src/skills/multi-surface-render in yonatangross/orchestkit) into .agents/skills/multi-surface-render in your project. Codex loads it when a task matches its description.

Can I use Multi Surface Render in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add yonatangross/orchestkit --skill multi-surface-render -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/multi-surface-render, .gemini/skills/multi-surface-render, .github/skills/multi-surface-render and .opencode/skills/multi-surface-render in your project.

What does Multi Surface Render need to run?

Going by SKILL.md and its folder, Multi Surface Render needs the command-line tools its instructions call (bash). Compatibility (from SKILL.md): Claude Code 2.1.277+.

Does Multi Surface Render access the network?

SKILL.md names 3 domains. As links in the text: github.com, react-pdf.org and remotion.dev. This is read from the text; nothing was executed.

Is Multi Surface Render safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Multi Surface Render use?

Multi Surface Render is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Multi Surface Render use?

About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.3k tokens, read only when the agent opens those files.

What are the alternatives to Multi Surface Render?

Skills that share tags, products or a category with Multi Surface Render: Remotion Best Practices (lyonjs/shortvid.io, 147 stars), Disney Animation Rule Skill (vibe-motion/skills, 1.3k stars), UI UX Pro Max (saoudi-h/solar-icons, 182 stars) and Create Remotion Geist (Marve10s/Better-Fullstack, 752 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Multi Surface Render?

yonatangross (a GitHub user) maintains it in yonatangross/orchestkit, which has 288 GitHub stars. The repository holds 107 skills in this directory. The repository was last updated on October 6, 2026.

Source: yonatangross/orchestkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.