GSAP Core Animation
greensock/gsap-skills
Covers the GSAP core API for tweens, easing, staggers, defaults and matchMedia, and when to choose GSAP over CSS animations or other JavaScript animation libraries.
Use SDK with React, Vue, Svelte, Solid, Preact, and Web Components.
$ npx skills add live-codes/livecodes --skill framework-wrappers -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install live-codes/livecodes framework-wrappers --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/live-codes/livecodes.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/livecodes/framework-wrappers .claude/skills/framework-wrappers && rm -rf skills-srcUse ~/.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/
Install the "framework-wrappers" agent skill from https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/framework-wrappers into .claude/skills/framework-wrappers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "framework-wrappers", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/framework-wrappersType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add live-codes/livecodes --skill framework-wrappers -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install live-codes/livecodes framework-wrappers --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/live-codes/livecodes.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/livecodes/framework-wrappers .agents/skills/framework-wrappers && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "framework-wrappers" agent skill from https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/framework-wrappers into .agents/skills/framework-wrappers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "framework-wrappers", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add live-codes/livecodes --skill framework-wrappers -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install live-codes/livecodes framework-wrappers --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/live-codes/livecodes.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/livecodes/framework-wrappers .cursor/skills/framework-wrappers && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "framework-wrappers" agent skill from https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/framework-wrappers into .cursor/skills/framework-wrappers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "framework-wrappers", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/live-codes/livecodes.git --path .agents/skills/livecodes/framework-wrappers--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add live-codes/livecodes --skill framework-wrappers -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install live-codes/livecodes framework-wrappers --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/live-codes/livecodes.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/livecodes/framework-wrappers .gemini/skills/framework-wrappers && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "framework-wrappers" agent skill from https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/framework-wrappers into .gemini/skills/framework-wrappers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "framework-wrappers", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install live-codes/livecodes framework-wrappersInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add live-codes/livecodes --skill framework-wrappers -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/live-codes/livecodes.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/livecodes/framework-wrappers .github/skills/framework-wrappers && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "framework-wrappers" agent skill from https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/framework-wrappers into .github/skills/framework-wrappers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "framework-wrappers", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add live-codes/livecodes --skill framework-wrappers -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install live-codes/livecodes framework-wrappers --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/live-codes/livecodes.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/livecodes/framework-wrappers .opencode/skills/framework-wrappers && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "framework-wrappers" agent skill from https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/framework-wrappers into .opencode/skills/framework-wrappers/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "framework-wrappers", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
framework-wrappersUse SDK with React, Vue, Svelte, Solid, Preact, and Web Components.
Framework Wrappers is an agent skill from live-codes/livecodes. Use SDK with React, Vue, Svelte, Solid, Preact, and Web Components. sdkReady callback pattern, reactive props, and framework-specific setup. Load this skill when embedding LiveCodes in a framework application.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in AI & LLM Engineering, covering Embeddings. It works with Vue.js, React, Preact and Svelte. The repository describes itself as: A Code Playground That Just Works! The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 5754e89. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
npmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
cdn.jsdelivr.netFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Framework Wrappers loads about 2.8k tokens when it runs. Until then it costs about 57 tokens; SKILL.md has 368 words of instructions outside code blocks.
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.
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.
The full file from live-codes/livecodes at commit 5754e89, republished under its MIT licence (© live-codes). 368 words, ~2,841 tokens.
.claude/skills/framework-wrappers/SKILL.md (or your agent's skills folder).This skill builds on sdk-embedding and sdk-methods. Read them first for foundational concepts about createPlayground, SDK methods, and configuration.
LiveCodes provides framework-specific components that wrap the core SDK. Each wrapper handles lifecycle, reactivity, and props.
import LiveCodes from 'livecodes/react';
// Basic usage
function App() {
return <LiveCodes template="react" />;
}
// With config
function App() {
const config = {
markup: { language: 'markdown', content: '# Hello World' },
};
return <LiveCodes config={config} height="400px" />;
}
// Access SDK methods via sdkReady
function App() {
const [playground, setPlayground] = useState(null);
const handleRun = async () => {
await playground?.run();
};
return (
<>
<LiveCodes
template="react"
sdkReady={setPlayground}
/>
<button onClick={handleRun}>Run</button>
</>
);
}
// TypeScript
import LiveCodes, { type Props } from 'livecodes/react';
const options: Props = {
config: { /* ... */ },
height: '500px',
};
export default () => <LiveCodes {...options} />;| Prop | Type | Description |
|---|---|---|
| All EmbedOptions | — | Pass EmbedOptions as props |
className | string | Container class name |
height | string | Container height |
style | object | Container styles |
sdkReady | (sdk: Playground) => void | Callback with SDK instance |
function App() {
const [config, setConfig] = useState({
markup: { language: 'html', content: '<h1>Hello</h1>' },
});
// Changing config uses setConfig() - no full reload
const switchToMarkdown = () => {
setConfig({
markup: { language: 'markdown', content: '# Hello' },
});
};
// Changing other props causes full reload
// <LiveCodes template={template} /> // changing template reloads
return (
<>
<LiveCodes config={config} />
<button onClick={switchToMarkdown}>Switch to Markdown</button>
</>
);
}<script setup>
import LiveCodes from 'livecodes/vue';
const config = {
markup: { language: 'markdown', content: '# Hello World' },
};
let playground;
const onReady = (sdk) => {
playground = sdk;
};
const run = async () => {
await playground?.run();
};
</script>
<template>
<LiveCodes :config="config" @sdk-ready="onReady" />
<button @click="run">Run</button>
</template>
<!-- With TypeScript -->
<script setup lang="ts">
import LiveCodes, { type Props } from 'livecodes/vue';
import type { Playground } from 'livecodes';
const options: Props = {
config: {
/* ... */
},
};
</script>
<template>
<LiveCodes v-bind="options" />
</template>| Prop | Type | Description |
|---|---|---|
| All EmbedOptions | — | Pass EmbedOptions as props |
height | string | Container height |
| Event | Payload |
|---|---|
@sdk-ready | (sdk: Playground) => void |
<script setup>
import { ref } from 'vue';
import LiveCodes from 'livecodes/vue';
const config = ref({
markup: { language: 'html', content: '<h1>Hello</h1>' },
});
// Uses setConfig() - no reload
const switchToMarkdown = () => {
config.value = {
markup: { language: 'markdown', content: '# Hello' },
};
};
</script>
<template>
<LiveCodes :config="config" />
<button @click="switchToMarkdown">Switch</button>
</template><script>
import LiveCodes from 'livecodes/svelte';
let playground;
const config = {
markup: { language: 'markdown', content: '# Hello World' },
};
function onReady(sdk) {
playground = sdk;
}
async function run() {
await playground?.run();
}
</script>
<LiveCodes {config} on:sdkReady={onReady} />
<button on:click={run}>Run</button>import LiveCodes from 'livecodes/solid';
import { createSignal } from 'solid-js';
function App() {
const [playground, setPlayground] = createSignal(null);
const config = {
markup: { language: 'markdown', content: '# Hello World' },
};
const handleRun = async () => {
await playground()?.run();
};
return (
<>
<LiveCodes config={config} sdkReady={setPlayground} />
<button onClick={handleRun}>Run</button>
</>
);
}import LiveCodes from 'livecodes/preact';
import { useState } from 'preact/hooks';
function App() {
const [playground, setPlayground] = useState(null);
const handleRun = async () => {
await playground?.run();
};
return (
<>
<LiveCodes template="react" sdkReady={setPlayground} />
<button onClick={handleRun}>Run</button>
</>
);
}<script src="https://cdn.jsdelivr.net/npm/livecodes/web-components.js"></script>
<!-- Basic usage -->
<live-codes template="react"></live-codes>
<!-- With config property -->
<live-codes height="400px"></live-codes>
<script>
const playground = document.querySelector('live-codes');
playground.config = {
markup: { language: 'markdown', content: '# Hello' },
};
</script>The web component supports providing code declaratively as child elements inside a wrapper <template>. This avoids JavaScript string escaping and enables IDE syntax highlighting.
The outer <template> makes inner <style> and <script> elements inert (no side effects on the embedding page).
<live-codes height="400px">
<template>
<template lang="html">
<h1>Hello World</h1>
<p>Welcome to <strong>LiveCodes</strong></p>
</template>
<style lang="scss">
body {
font-family: sans-serif;
h1 {
color: royalblue;
}
}
</style>
<script lang="ts">
console.log('Hello from TypeScript!');
</script>
</template>
</live-codes>If lang is omitted, defaults are html, css, and javascript.
Use the active boolean attribute to set the initially focused editor:
<live-codes>
<template>
<template lang="html"><h1>Hello</h1></template>
<script lang="ts" active>
console.log('focused');
</script>
</template>
</live-codes>Use config and params HTML attributes as JSON strings for non-code settings:
<live-codes config='{"processors": ["tailwindcss"]}' params='{"console": "open"}'>
<template>
<template lang="html"><h1 class="text-3xl">Hello</h1></template>
</template>
</live-codes>When combining children, config attribute, and config property:
config property (highest — explicit programmatic override)config attribute (lowest — inline JSON settings)Same for params: attribute is merged with property, property wins for overlapping keys.
Children content is reactive. Changing content inside the wrapper <template> programmatically triggers setConfig():
<live-codes id="demo">
<template>
<style lang="css">
h1 {
color: blue;
}
</style>
</template>
</live-codes>
<script>
function changeColor() {
const wrapper = document.querySelector('#demo > template');
wrapper.content.querySelector('style').textContent = 'h1 { color: red; }';
// MutationObserver detects this → setConfig() called
}
</script>Wrong (React):
function App() {
// No way to get SDK reference
return <LiveCodes template="react" />;
}
function handleRun() {
// Where's playground? Can't access SDK methods
playground.run(); // Error: playground is undefined
}Correct (React):
function App() {
const [playground, setPlayground] = useState(null);
const handleRun = async () => {
await playground?.run();
};
return (
<>
<LiveCodes template="react" sdkReady={setPlayground} />
<button onClick={handleRun}>Run</button>
</>
);
}Correct (Vue):
<script setup>
import LiveCodes from 'livecodes/vue';
import { ref } from 'vue';
const playground = ref(null);
const onReady = (sdk) => {
playground.value = sdk;
};
</script>
<template>
<LiveCodes template="vue" @sdk-ready="onReady" />
</template>The SDK is only available after the playground initializes. Use sdkReady (React), @sdk-ready (Vue), or on:sdkReady (Svelte) to get a reference.
Source: docs/docs/sdk/react.mdx, docs/docs/sdk/vue.mdx — sdkReady section
// React - config changes use setConfig (no reload)
const [config, setConfig] = useState(initialConfig);
setConfig(newConfig); // Efficient update, no iframe reload
// React - other prop changes cause full reload
const [template, setTemplate] = useState('react');
setTemplate('vue'); // Destroys and recreates iframeChanging config prop uses SDK's setConfig() method under the hood — efficient. Changing other props (template, params, loading) destroys and recreates the iframe.
If you need reactive changes, prefer updating config over changing other props.
Source: docs/docs/sdk/react.mdx — Reactive Props section
# React
npm install livecodes
import LiveCodes from 'livecodes/react';
# Vue 3
npm install livecodes
import LiveCodes from 'livecodes/vue';
# Svelte
npm install livecodes
import LiveCodes from 'livecodes/svelte';
# Solid
npm install livecodes
import LiveCodes from 'livecodes/solid';
# Preact
npm install livecodes
import LiveCodes from 'livecodes/preact';
# Web Components (CDN)
<script src="https://cdn.jsdelivr.net/npm/livecodes/web-components.js"></script>All frameworks export:
Props — EmbedOptions plus framework-specific propsPlayground — SDK Playground interfaceConfig — Configuration typeCode — Code object typeLanguage — Language string type© live-codes, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/livecodes/framework-wrappers of live-codes/livecodes.
Open the folder on GitHubat commit 5754e89
Framework Wrappers 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Framework Wrappers this skilllive-codes/livecodes | 1.5k | — | ~2.8k | Automated safety check: Pass | MIT | |
| GSAP Core Animationgreensock/gsap-skills | 16k | 4 repos | ~3.7k | Automated safety check: Pass | MIT | |
| Boneyard0xGF/boneyard | 7.5k | — | ~2.2k | Automated safety check: Notes | MIT | |
| D3 Vizcalesthio/OpenMontage | 65k | 3 repos | ~5.4k | Automated safety check: Pass | AGPL-3.0 | |
| Tailwind To Stylexshadcn-labs/shadcn-cssinjs | 122 | — | ~2.7k | Automated safety check: Pass | MIT | |
| UI CraftMemTensor/memmy-agent | 2.1k | — | ~2.9k | Automated safety check: Pass | MIT |
greensock/gsap-skills
Covers the GSAP core API for tweens, easing, staggers, defaults and matchMedia, and when to choose GSAP over CSS animations or other JavaScript animation libraries.
0xGF/boneyard
Use boneyard-js to add, configure, debug, or rebuild skeleton screens.
calesthio/OpenMontage
Creating interactive data visualisations using d3.js. An agent skill from calesthio/OpenMontage.
shadcn-labs/shadcn-cssinjs
Migrate TailwindCSS to StyleX. An agent skill from shadcn-labs/shadcn-cssinjs.
MemTensor/memmy-agent
Design, build, redesign, or modify browser-visible web interfaces with product-quality composition, visual systems, interaction states, responsive behavior, accessibility, and browser visual QA.
neo4j-contrib/neo4j-skills
Neo4j Visualization Library (NVL) — framework-agnostic graph rendering for the browser.
live-codes/livecodes
Work with 90+ supported languages, compilers, CSS processors, and WASM-compiled languages for markup, style, and script editors.
live-codes/livecodes
Configure playground behavior through Config object, query parameters, EmbedOptions, editor settings, processors, external resources, and custom settings.
live-codes/livecodes
Configure how the playground is displayed: full, focus, simple, lite, editor, codeblock, and result modes.
live-codes/livecodes
Quick start for standalone app at livecodes.io, embedding playgrounds with CDN or npm, and self-hosting basics.
live-codes/livecodes
Use the "Preview in LiveCodes" GitHub Action to generate preview playground links for pull request code changes.
live-codes/livecodes
Run playground without visible UI using SDK methods directly.
Works with
Categories
Use SDK with React, Vue, Svelte, Solid, Preact, and Web Components. Framework Wrappers is an agent skill from live-codes/livecodes. Use SDK with React, Vue, Svelte, Solid, Preact, and Web Components.
Framework Wrappers fits situations like: tasks that involve Embeddings.
Run `npx skills add live-codes/livecodes --skill framework-wrappers -a claude-code`. Or copy the skill folder (.agents/skills/livecodes/framework-wrappers in live-codes/livecodes) into .claude/skills/framework-wrappers in your project. Claude Code loads it when a task matches its description.
Run `npx skills add live-codes/livecodes --skill framework-wrappers -a codex`. Or copy the skill folder (.agents/skills/livecodes/framework-wrappers in live-codes/livecodes) into .agents/skills/framework-wrappers in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add live-codes/livecodes --skill framework-wrappers -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/framework-wrappers, .gemini/skills/framework-wrappers, .github/skills/framework-wrappers and .opencode/skills/framework-wrappers in your project.
Going by SKILL.md and its folder, Framework Wrappers needs the command-line tools its instructions call (npm). Our summary lists: Node.js.
SKILL.md names 1 domain. In commands or code: cdn.jsdelivr.net; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
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.
Framework Wrappers is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Framework Wrappers: GSAP Core Animation (greensock/gsap-skills, 16k stars), Boneyard (0xGF/boneyard, 7.5k stars), D3 Viz (calesthio/OpenMontage, 65k stars) and Tailwind To Stylex (shadcn-labs/shadcn-cssinjs, 122 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
live-codes (a GitHub organization) maintains it in live-codes/livecodes, which has 1,512 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 6, 2026.
Source: live-codes/livecodes on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.