Interactive HTML Playground Builder
anthropics/claude-plugins-official
Builds a single-file HTML explorer with visual controls, a live preview and a copyable prompt, using one of six templates chosen to fit the topic.
Use SDK methods to interact with playgrounds: run, getCode, setConfig, getConfig, watch, runTests, format, getShareUrl, show, destroy.
$ npx skills add live-codes/livecodes --skill sdk-methods -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install live-codes/livecodes sdk-methods --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/sdk-methods .claude/skills/sdk-methods && 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 "sdk-methods" agent skill from https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/sdk-methods into .claude/skills/sdk-methods/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdk-methods", 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/sdk-methodsType 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 sdk-methods -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install live-codes/livecodes sdk-methods --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/sdk-methods .agents/skills/sdk-methods && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sdk-methods" agent skill from https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/sdk-methods into .agents/skills/sdk-methods/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdk-methods", 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 sdk-methods -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install live-codes/livecodes sdk-methods --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/sdk-methods .cursor/skills/sdk-methods && 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 "sdk-methods" agent skill from https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/sdk-methods into .cursor/skills/sdk-methods/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdk-methods", 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/sdk-methods--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 sdk-methods -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install live-codes/livecodes sdk-methods --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/sdk-methods .gemini/skills/sdk-methods && 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 "sdk-methods" agent skill from https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/sdk-methods into .gemini/skills/sdk-methods/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdk-methods", 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 sdk-methodsInstalls 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 sdk-methods -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/sdk-methods .github/skills/sdk-methods && 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 "sdk-methods" agent skill from https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/sdk-methods into .github/skills/sdk-methods/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdk-methods", 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 sdk-methods -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 sdk-methods --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/sdk-methods .opencode/skills/sdk-methods && 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 "sdk-methods" agent skill from https://github.com/live-codes/livecodes/tree/develop/.agents/skills/livecodes/sdk-methods into .opencode/skills/sdk-methods/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdk-methods", 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.
sdk-methodsUse SDK methods to interact with playgrounds: run, getCode, setConfig, getConfig, watch, runTests, format, getShareUrl, show, destroy.
SDK Methods is an agent skill from live-codes/livecodes. Use SDK methods to interact with playgrounds: run, getCode, setConfig, getConfig, watch, runTests, format, getShareUrl, show, destroy. Load this skill when programmatically controlling embedded playgrounds, reacting to code changes, or retrieving compiled output.
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: A Code Playground That Just Works! The licence is MIT.
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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
SDK Methods loads about 2k tokens when it runs. Until then it costs about 69 tokens; SKILL.md has 196 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). 196 words, ~2,018 tokens.
.claude/skills/sdk-methods/SKILL.md (or your agent's skills folder).This skill builds on sdk-embedding. Read it first for foundational concepts.
The Playground object returned by createPlayground exposes methods to programmatically control the playground.
import { createPlayground } from 'livecodes';
const playground = await createPlayground('#container', {
template: 'react',
});
// All SDK methods return Promises
await playground.run();
const code = await playground.getCode();
await playground.setConfig({
/* new config */
});// Run the result page (after any needed compilation)
await playground.run();// Get code from all editors
const code = await playground.getCode();
console.log(code.markup.content); // Source markup
console.log(code.markup.language); // Language name
console.log(code.markup.compiled); // Compiled output (if applicable)
console.log(code.result); // Result page HTML
// Get configuration object
const config = await playground.getConfig();
console.log(config.title);
console.log(config.markup.language);
// Get content-only config (without user preferences)
const contentConfig = await playground.getConfig(true);// Load new project in place (no full reload)
await playground.setConfig({
markup: { language: 'markdown', content: '# New Content' },
});
// Get the resulting config
const newConfig = await playground.setConfig({
script: { language: 'typescript', content: 'const x: number = 1;' },
});// Watch for code changes
const codeWatcher = playground.watch('code', ({ code, config }) => {
console.log('Code changed:', code.script.content);
});
// Watch for code execution
const runWatcher = playground.watch('run', ({ code, config }) => {
console.log('Playground ran. Result HTML:', code.result);
});
// Watch for console output
const consoleWatcher = playground.watch('console', ({ method, args }) => {
console[method](...args);
});
// Watch for test results
const testsWatcher = playground.watch('tests', ({ results, error }) => {
results.forEach((r) => console.log(r.status, r.testPath));
});
// Remove watchers when done
codeWatcher.remove();
runWatcher.remove();
consoleWatcher.remove();
testsWatcher.remove();const { results } = await playground.runTests();
results.forEach((result) => {
console.log(result.status); // 'pass', 'fail', or 'skip'
console.log(result.errors); // Array of error strings
console.log(result.testPath); // ['describe', 'it']
});// Show editors
await playground.show('editor'); // Active editor
await playground.show('markup'); // Markup editor
await playground.show('style'); // Style editor
await playground.show('script'); // Script editor
// Show tools
await playground.show('console'); // Console panel
await playground.show('compiled'); // Compiled code viewer
await playground.show('tests'); // Tests panel
// Show result
await playground.show('result'); // Result page
await playground.show('toggle-result'); // Toggle result visibility
// With options
await playground.show('result', { full: true }); // Full screen
await playground.show('result', { zoom: 0.5 }); // 50% zoom
await playground.show('script', { line: 10, column: 5 }); // Scroll to line// Format all editors
await playground.format();
// Format only active editor
await playground.format(false);// Long URL with compressed config
const longUrl = await playground.getShareUrl();
// Short URL (requires share service)
const shortUrl = await playground.getShareUrl(true);// Set broadcast token
await playground.exec('setBroadcastToken', 'my-token');
// Show version info
await playground.exec('showVersion');await playground.destroy();
// Playground removed from DOM, all event listeners cleaned upWrong:
const playground = await createPlayground('#container', {});
const code = playground.getCode(); // Returns Promise, not code
console.log(code); // Promise { <pending> }Correct:
const playground = await createPlayground('#container', {});
const code = await playground.getCode(); // Await the Promise
console.log(code.markup.content);All SDK methods return Promises. Use await or .then() to get the result.
Source: docs/docs/sdk/js-ts.mdx — SDK methods section
Wrong:
playground.watch('code', (data) => {
console.log(data.content); // Undefined
});Correct:
// 'code' event provides { code, config }
playground.watch('code', ({ code, config }) => {
console.log(code.markup.content);
console.log(code.style.content);
console.log(code.script.content);
console.log(code.result); // Result page HTML
});
// 'run' event provides { code, config }
playground.watch('run', ({ code, config }) => {
console.log(code.result); // Result page HTML
});
// 'console' event provides { method, args }
playground.watch('console', ({ method, args }) => {
console[method](...args);
});
// 'tests' event provides { results, error? }
playground.watch('tests', ({ results, error }) => {
if (error) console.error(error);
results.forEach((r) => console.log(r.status));
});Source: docs/docs/sdk/js-ts.mdx — watch method section
Wrong:
// Deprecated method
const watcher = playground.onChange(({ code, config }) => {
console.log('changed');
});Correct:
// Use watch instead
const watcher = playground.watch('code', ({ code, config }) => {
console.log('changed');
});
watcher.remove(); // When done watchingonChange is deprecated. Use watch('code', callback) instead.
Source: src/sdk/index.ts — onChange marked as deprecated
| Method | Returns | Description |
|---|---|---|
load() | Promise<void> | Load playground (for click-to-load mode) |
run() | Promise<void> | Run the result page |
format(allEditors?) | Promise<void> | Format code |
getShareUrl(shortUrl?) | Promise<string> | Get shareable URL |
getConfig(contentOnly?) | Promise<Config> | Get configuration |
setConfig(config) | Promise<Config> | Update configuration |
getCode() | Promise<Code> | Get code from all editors |
show(panel, options?) | Promise<void> | Show specific panel |
runTests() | Promise<{results}> | Run tests |
watch(event, fn) | {remove()} | Subscribe to events |
exec(command, ...args) | Promise<any> | Execute custom command |
destroy() | Promise<void> | Clean up and remove |
© 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/sdk-methods of live-codes/livecodes.
Open the folder on GitHubat commit 5754e89
SDK Methods 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 |
|---|---|---|---|---|---|---|
| SDK Methods this skilllive-codes/livecodes | 1.5k | — | ~2k | Automated safety check: Pass | MIT | |
| Interactive HTML Playground Builderanthropics/claude-plugins-official | 37k | 1 repos | ~949 | Automated safety check: Pass | Apache-2.0 | |
| PlaygroundArize-ai/phoenix | 12k | — | ~3.9k | Automated safety check: Pass | Custom licence | |
| Vuetify Playgroundvuetifyjs/vuetify | 41k | — | ~730 | Automated safety check: Pass | Custom licence | |
| Remotion Interactivityremotion-dev/remotion | 62k | 5 repos | ~4.7k | Automated safety check: Pass | Custom licence | |
| Firecrawl Interact Integrationfirecrawl/firecrawl | 189k | 1 repos | ~731 | Automated safety check: Pass | ISC |
anthropics/claude-plugins-official
Builds a single-file HTML explorer with visual controls, a live preview and a copyable prompt, using one of six templates chosen to fit the topic.
Arize-ai/phoenix
Author, edit, or iterate on prompts in the Phoenix prompt playground, including running experiments over a dataset.
vuetifyjs/vuetify
Maintains the Vuetify repo's local Playground.vue so contributors get a realistic reproduction and a short demo they can paste into a pull request description.
remotion-dev/remotion
Structure Remotion markup for interactivity. An agent skill from remotion-dev/remotion.
firecrawl/firecrawl
Guides adding Firecrawl's /interact endpoint to product code for pages that need clicks, forms, pagination or logged-in flows beyond plain scraping.
affaan-m/ECC
Multi-agent adversarial verification: two independent reviewers with the same rubric must both pass before output ships, with a fix-and-re-review convergence loop and human escalation cap.
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
Use SDK with React, Vue, Svelte, Solid, Preact, and Web Components.
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.
Use SDK methods to interact with playgrounds: run, getCode, setConfig, getConfig, watch, runTests, format, getShareUrl, show, destroy. SDK Methods is an agent skill from live-codes/livecodes. Use SDK methods to interact with playgrounds: run, getCode, setConfig, getConfig, watch, runTests, format, getShareUrl, show, destroy.
Run `npx skills add live-codes/livecodes --skill sdk-methods -a claude-code`. Or copy the skill folder (.agents/skills/livecodes/sdk-methods in live-codes/livecodes) into .claude/skills/sdk-methods in your project. Claude Code loads it when a task matches its description.
Run `npx skills add live-codes/livecodes --skill sdk-methods -a codex`. Or copy the skill folder (.agents/skills/livecodes/sdk-methods in live-codes/livecodes) into .agents/skills/sdk-methods 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 sdk-methods -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sdk-methods, .gemini/skills/sdk-methods, .github/skills/sdk-methods and .opencode/skills/sdk-methods in your project.
SKILL.md names no scripts, command-line tools or credentials: SDK Methods is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
SDK Methods is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8.1k 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 SDK Methods: Interactive HTML Playground Builder (anthropics/claude-plugins-official, 37k stars), Playground (Arize-ai/phoenix, 12k stars), Vuetify Playground (vuetifyjs/vuetify, 41k stars) and Remotion Interactivity (remotion-dev/remotion, 62k 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.