.agents/skills/json-render-image/SKILL.md
Image renderer for json-render that turns JSON specs into SVG and PNG images via Satori. Use when working with @json-render/image, generating OG images from JSON, creating social cards, or rendering AI-generated image specs.
npx skillsauth add b-open-io/prompts json-render-imageInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Image renderer that converts JSON specs into SVG and PNG images using Satori.
import { renderToPng } from "@json-render/image/render";
import type { Spec } from "@json-render/core";
const spec: Spec = {
root: "frame",
elements: {
frame: {
type: "Frame",
props: { width: 1200, height: 630, backgroundColor: "#1a1a2e" },
children: ["heading"],
},
heading: {
type: "Heading",
props: { text: "Hello World", level: "h1", color: "#ffffff" },
children: [],
},
},
};
const png = await renderToPng(spec, {
fonts: [{ name: "Inter", data: fontData, weight: 400, style: "normal" }],
});
import { defineCatalog } from "@json-render/core";
import { schema, standardComponentDefinitions } from "@json-render/image";
export const imageCatalog = defineCatalog(schema, {
components: standardComponentDefinitions,
});
import { z } from "zod";
const catalog = defineCatalog(schema, {
components: {
...standardComponentDefinitions,
Badge: {
props: z.object({ label: z.string(), color: z.string().nullable() }),
slots: [],
description: "A colored badge label",
},
},
});
| Component | Category | Description |
|-----------|----------|-------------|
| Frame | Root | Root container. Defines width, height, background. Must be root. |
| Box | Layout | Container with padding, margin, border, absolute positioning |
| Row | Layout | Horizontal flex layout |
| Column | Layout | Vertical flex layout |
| Heading | Content | h1-h4 heading text |
| Text | Content | Body text with full styling |
| Image | Content | Image from URL |
| Divider | Decorative | Horizontal line separator |
| Spacer | Decorative | Empty vertical space |
| Export | Purpose |
|--------|---------|
| renderToSvg | Render spec to SVG string |
| renderToPng | Render spec to PNG buffer (requires @resvg/resvg-js) |
| schema | Image element schema |
| standardComponents | Pre-built component registry |
| standardComponentDefinitions | Catalog definitions for AI prompts |
| Export | Description |
|--------|-------------|
| @json-render/image | Full package: schema, components, render functions |
| @json-render/image/server | Schema and catalog definitions only (no React/Satori) |
| @json-render/image/catalog | Standard component definitions and types |
| @json-render/image/render | Render functions only |
development
This skill should be used when the user asks to "design a business card", "make a printable PDF", "render HTML to PDF", "generate a postcard", "build print collateral", "set up an HTML print pipeline", or needs help with bleed, safe areas, font embedding, or QR generation for print. Provides a Playwright-based pipeline with multiple bundled templates and theme variants for business cards (minimal, watercolor light, watercolor dark) and instructions for adding new templates.
tools
Get recent tweets from an X/Twitter user. Use when user asks "what has @username posted", "recent tweets from", "user's X posts", "show timeline for", "what is @user saying". Requires X_BEARER_TOKEN.
data-ai
Get X/Twitter user profile by username. Use when user asks "who is @username", "get X profile", "lookup Twitter user", "find X account", "user details", "follower count for". Requires X_BEARER_TOKEN.
data-ai
Search recent X/Twitter posts by query. Returns RAW TWEETS (last 7 days). Use when user asks "search X for", "find tweets about", "what are people saying about", "Twitter search", "raw tweets about". For AI summaries/sentiment, use x-research instead. Requires X_BEARER_TOKEN.