Not in the top 1,000 by GitHub stars

VisroliyaHimanshu/jsxmotion

Narrated videos written like apps: a Claude Code skill and plugin that rebuilds your app's screens in JSX, voices them with ElevenLabs and lands every frame on the spoken word.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/jsxmotion/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

d916728e109a → d916728e109a

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → d916728e109a

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit d916728e109af347bdeb2d17f71d11b13f6f207d

git clone --filter=blob:none --no-checkout https://github.com/VisroliyaHimanshu/jsxmotion.git .hotskills/visroliyahimanshu-jsxmotion && git -C .hotskills/visroliyahimanshu-jsxmotion checkout --detach d916728e109af347bdeb2d17f71d11b13f6f207d # Copy each selected skill directory from .hotskills/visroliyahimanshu-jsxmotion into .claude/skills/<skill-name>/
3GitHub stars
0stars in 7 days
1skill in this repository
15commits in 30 days

Heat

1.6
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 28, 2026Oct 28, 20263

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

jsxmotion

When your agent uses it

Use when asked to make, change, shorten, retime or re-voice a video with voiceover for any app or project, such as an app guide, tutorial, demo or walkthrough, an announcement or explainer built from a storyboard image, or a promo, ad, reel or skit (Remotion, ElevenLabs).

What it loads into context

Frontmatter

74 tokens

Always available to the agent

SKILL.md

2,415 tokens

When the skill is activated

Reference documents

916 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Overview
  2. Projects
  3. Workflow
  4. Look
  5. QA
  6. Common mistakes

Scripts executed separately

  • ../../hooks/keys.mjs
  • scripts/cast.mjs
  • scripts/stills.mjs
  • scripts/tighten.py
  • scripts/tts.mjs

Files

  • ../../.claude-plugin/marketplace.jsonasset432 bytes
  • ../../.claude-plugin/plugin.jsonasset1,346 bytes
  • ../../hooks/hooks.jsonasset487 bytes
  • ../../hooks/keys.mjsruns2,308 bytes
  • SKILL.mdcore9,393 bytes
  • SKILL.mdcore9,393 bytes
  • SKILL.mdcore9,393 bytes
  • kinds.mddoc3,627 bytes
  • scripts/cast.mjsruns3,345 bytes
  • scripts/stills.mjsruns1,732 bytes
  • scripts/tighten.pyruns3,369 bytes
  • scripts/tts.mjsruns12,304 bytes
Read SKILL.md

# JSXMotion

## Overview
A video here is React scenes animated in Remotion, voiced by ElevenLabs, with every beat timed to a spoken word. App and vendor UI is always rebuilt, never shown as screenshots, screen recordings or a slideshow of the storyboard. A supplied image that is itself the content (a signature, a logo, a product photo) may appear as an image. Each product keeps its own video project and its own look; this skill holds the process and the tools in `scripts/` in this skill's base directory (shown when the skill loads).

## Projects
Read `~/.claude/jsxmotion/projects.md` first if it exists (the user's private list, kept outside the skill so updates never touch it: folder, notes to read, voice command, conventions). Then read that project's own notes. A project not listed: ask the user where it lives, then add a row there.

New project: set it up yourself, the user should not have to. Check `node -v` (22 or newer) and `ffmpeg -version` first; if one is missing, offer the install command (macOS: `brew install node ffmpeg`) and run it on yes. Then a Remotion project inside the product's repo, with `scripts/tts.mjs` and `scripts/cast.mjs` copied from this skill and `stills.mjs` in `qa/`, `.env`, `voice-previews/` and `out/` in its `.gitignore`, and this `remotion.config.ts` (lossless frames keep small text and dark gradients clean; yuv420p plays everywhere, GitHub included):

```ts
import { Config } from '@remotion/cli/config';
Config.setVideoImageFormat('png');
Config.setPixelFormat('yuv420p');
View the complete source on GitHub

Skills included

  • jsxmotion

Repository facts

License
MIT
Created
Oct 27, 2026
Last pushed
Oct 28, 2026
Forks
0
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 7, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 2 notes
  • skills/jsxmotion/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/jsxmotion/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 45 signals by file

.claude-plugin/marketplace.json

  • Network accessline 4
    "owner": {     "name": "Himanshu Visroliya",     "url": "https://github.com/VisroliyaHimanshu"
  • Network accessline 5
    "name": "Himanshu Visroliya",     "url": "https://github.com/VisroliyaHimanshu"   },
  • Network accessline 6
    "url": "https://github.com/VisroliyaHimanshu"

.claude-plugin/plugin.json

  • Network accessline 5
    "author": {     "name": "Himanshu Visroliya",     "url": "https://github.com/VisroliyaHimanshu"
  • Network accessline 6
    "name": "Himanshu Visroliya",     "url": "https://github.com/VisroliyaHimanshu"   },
  • Network accessline 7
    "url": "https://github.com/VisroliyaHimanshu"
  • Network accessline 8
    },   "homepage": "https://github.com/VisroliyaHimanshu/jsxmotion",   "repository": "https://github.com/VisroliyaHimanshu/jsxmotion",
  • Network accessline 9
    "homepage": "https://github.com/VisroliyaHimanshu/jsxmotion",
  • Network accessline 10
    "repository": "https://github.com/VisroliyaHimanshu/jsxmotion",
  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 25
    [Credential-related source omitted]

hooks/keys.mjs

  • Executable scriptline 1
    Executable file
  • Access to secretsline 20
    [Credential-related source omitted]

skills/jsxmotion/SKILL.md

  • Access to secretsline 33
    [Credential-related source omitted]
  • Dangerous shell operationline 52
    - Delete the QA PNGs (`find qa -name '*.png' -delete`; in zsh `rm qa/*.png` fails when there are none).

skills/jsxmotion/kinds.md

  • Network accessline 12
    - Default vertical 1080×1920, loudness like guides (mean about -21 dB). First reply, before building: transcribe the panels into a flow table (time, scene, on screen, motion) and list the issues found, then ask. - The storyboard's timestamp
  • Network accessline 13
    - The storyboard's timestamps don't set the timing; the voice does. Its full text read aloud runs about twice its timestamps, so voice a tightened version and keep the full copy on screen as captions. - Keep the storyboard's palette and com
  • Network accessline 14
    - Keep the storyboard's palette and composition. Redraw its pictures as animated vectors (skyline, devices, product windows, icons); fetch an official brand icon once, else draw it (Microsoft products: `https://res-1.cdn.office.net/files/fa
  • Dangerous shell operationline 21
    - Music and SFX (`tts.mjs <video> sfx` / `music`) sit under the dialogue. Render through the limiter pass to about -14 LUFS, as the `render:` script: `remotion render <Comp> out/<v>-raw.mp4 && ffmpeg -y -loglevel error -i out/<v>-raw.mp4 -c

skills/jsxmotion/scripts/cast.mjs

  • Executable scriptline 1
    Executable file
  • Access to secretsline 12
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Network accessline 33
    const p = new URLSearchParams({ page_size: '30', language: 'en', search, sort: 'usage_character_count_1y',       ...(gender && { gender }), ...(accent && { accent }) });     const res = await fetch(`https://api.elevenlabs.io/v1/shared-voice
  • Network accessline 34
    ...(gender && { gender }), ...(accent && { accent }) });     const res = await fetch(`https://api.elevenlabs.io/v1/shared-voices?${p}`, { headers });     if (!res.ok) { console.error('HTTP', res.status, (await res.text()).slice(0, 300)); pr
  • Network accessline 35
    const res = await fetch(`https://api.elevenlabs.io/v1/shared-voices?${p}`, { headers });
  • Network accessline 45
    seen.add(v.voice_id);     const file = `${role}-${n + 1}-${v.name.replace(/[^A-Za-z0-9]+/g, '-').slice(0, 30)}.mp3`;     if (v.preview_url) writeFileSync(join(dir, file), Buffer.from(await (await fetch(v.preview_url)).arrayBuffer()));
  • Network accessline 46
    const file = `${role}-${n + 1}-${v.name.replace(/[^A-Za-z0-9]+/g, '-').slice(0, 30)}.mp3`;     if (v.preview_url) writeFileSync(join(dir, file), Buffer.from(await (await fetch(v.preview_url)).arrayBuffer()));     console.log(`${n + 1}. ${v.
  • Network accessline 47
    if (v.preview_url) writeFileSync(join(dir, file), Buffer.from(await (await fetch(v.preview_url)).arrayBuffer()));

skills/jsxmotion/scripts/stills.mjs

  • Executable scriptline 1
    Executable file

skills/jsxmotion/scripts/tighten.py

  • Executable scriptline 1
    Executable file

skills/jsxmotion/scripts/tts.mjs

  • Executable scriptline 1
    Executable file
  • Access to secretsline 2
    [Credential-related source omitted]
  • Access to secretsline 3
    [Credential-related source omitted]
  • Access to secretsline 5
    [Credential-related source omitted]
  • Access to secretsline 26
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Access to secretsline 38
    [Credential-related source omitted]
  • Access to secretsline 41
    [Credential-related source omitted]
  • Access to secretsline 42
    [Credential-related source omitted]
  • Network accessline 51
    async function post(url, body) {   const res = await fetch(`https://api.elevenlabs.io${url}`, {
  • Network accessline 52
    const res = await fetch(`https://api.elevenlabs.io${url}`, {
  • Network accessline 194
    form.append('model_id', 'scribe_v1');     form.append('file', new Blob([readFileSync(path(`public/audio/${spec.prefix}-line${i}.mp3`))], { type: 'audio/mpeg' }), `line${i}.mp3`);     const res = await fetch('https://api.elevenlabs.io/v1/spe
  • Network accessline 195
    form.append('file', new Blob([readFileSync(path(`public/audio/${spec.prefix}-line${i}.mp3`))], { type: 'audio/mpeg' }), `line${i}.mp3`);     const res = await fetch('https://api.elevenlabs.io/v1/speech-to-text', { method: 'POST', body: form
  • Network accessline 196
    [Credential-related source omitted]

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 34 facts

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/jsxmotion/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/jsxmotion/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/jsxmotion/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/jsxmotion/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/jsxmotion/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.