Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate configurable chat motion overlays from a transcript or screenshot, including plain bubble scenes, app-style chat containers, optional device frames, preset or uploaded avatars, nickname display rules, and transparent-video-ready Remotion bundles. Use when Codex needs to create reusable short-form chat clips for Douyin, demo videos, story reenactments, social-message proof scenes, or embeddable alpha overlays for Hyperframe and Remotion workflows.
.claude/skills/nexu-io-chat-motion-overlay/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 8% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -43% | 0% |
Turn chat content into a configurable motion overlay clip instead of a single hard-coded WeChat mock.
references/input-format.md.references/config-schema.md.references/question-strategy.md.scripts/build_chat_overlay_spec.py with a transcript and optional config JSON.scripts/prepare_chat_overlay_bundle.py.src/chatSpec.ts, and copies any uploaded avatar files into public/.references/output-modes.md.MOV(透明背景,可直接导入剪映 / PR / FCP 叠加) for editing, WebM(透明背景,适合网页 / 浏览器播放) for browsers, and editable engineering outputs when the user wants to keep composing downstream.container: none, wechat, telegram, messengeravatarMode: preset, upload, mixeddeviceFrame: none, iphone-dynamic-islandnicknameMode: hidden, first-message-only, alwaysdeliveryFormat:mov: MOV(透明背景,可直接导入剪映 / PR / FCP 叠加)webm: WebM(透明背景,适合网页 / 浏览器播放)remotion: Remotion 工程(适合继续编辑和拼装)hyperframe: Hyperframe 工程(适合作为模块继续复用)json: JSON 数据(适合程序处理 / 自定义渲染)preview: 预览图 / 预览工程(适合先确认效果)container: none for standalone bubble motion without an app shell.container: wechat|telegram|messenger when the platform chrome is part of the story.public/ for the render bundle.deliveryFormat using 格式(场景描述) labels, not internal render terms.references/input-format.mdreferences/config-schema.mdreferences/question-strategy.mdreferences/output-modes.mdscripts/build_chat_overlay_spec.pyscripts/prepare_chat_overlay_bundle.pyassets/remotion-template/| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-09 | fail→fail | 11,621 | 8,304 | -29% | 1 | 1 | 0% | 1,855 | 2,368 | +28% | 0 | 0 | — |
case-01 | fail→fail | 17,200 | 11,954 | -31% | 1 | 1 | 0% | 1,996 | 1,897 | -5% | 0 | 0 | — |
case-02 | fail→fail | 7,533 | 9,881 | +31% | 1 | 1 | 0% | 1,127 | 2,304 | +104% | 0 | 0 | — |
case-03 | fail→fail | 25,335 | 9,091 | -64% | 1 | 1 | 0% | 3,850 | 2,021 | -48% | 0 | 0 | — |
case-04 | pass→pass | 11,047 | 7,206 | -35% | 1 | 1 | 0% | 1,596 | 2,211 | +39% | 0 | 0 | — |
case-05 | pass→pass | 13,309 | 10,546 | -21% | 1 | 1 | 0% | 1,659 | 2,392 | +44% | 0 | 0 | — |
case-06 | pass→pass | 11,363 | 7,600 | -33% | 1 | 1 | 0% | 1,599 | 2,039 | +28% | 0 | 0 | — |
case-07 | fail→pass | 11,604 | 4,862 | -58% | 1 | 1 | 0% | 1,433 | 1,532 | +7% | 0 | 0 | — |
case-08 | fail→pass | 8,930 | 6,904 | -23% | 1 | 1 | 0% | 1,443 | 1,875 | +30% | 0 | 0 | — |
case-10 | fail→pass | 9,930 | 3,154 | -68% | 1 | 1 | 0% | 1,227 | 1,325 | +8% | 0 | 0 | — |
case-11 | fail→pass | 8,746 | 3,828 | -56% | 1 | 1 | 0% | 1,265 | 1,523 | +20% | 0 | 0 | — |
case-12 | pass→pass | 12,609 | 5,127 | -59% | 1 | 1 | 0% | 1,871 | 1,806 | -3% | 0 | 0 | — |
case-13 | fail→pass | 16,657 | 2,580 | -85% | 1 | 1 | 0% | 2,353 | 1,337 | -43% | 0 | 0 | — |
case-14 | fail→pass | 5,699 | 3,441 | -40% | 1 | 1 | 0% | 868 | 1,398 | +61% | 0 | 0 | — |
case-15 | fail→fail | 9,909 | 5,735 | -42% | 1 | 1 | 0% | 1,408 | 1,629 | +16% | 0 | 0 | — |
case-16 | fail→pass | 13,163 | 2,900 | -78% | 1 | 1 | 0% | 2,012 | 1,482 | -26% | 0 | 0 | — |
case-17 | pass→pass | 11,619 | 2,489 | -79% | 1 | 1 | 0% | 1,367 | 1,377 | +1% | 0 | 0 | — |
case-18 | fail→pass | 16,089 | 10,853 | -33% | 1 | 1 | 0% | 2,475 | 2,748 | +11% | 0 | 0 | — |
case-19 | pass→pass | 8,051 | 4,156 | -48% | 1 | 1 | 0% | 1,123 | 1,516 | +35% | 0 | 0 | — |
case-20 | fail→pass | 10,264 | 3,137 | -69% | 1 | 1 | 0% | 1,491 | 1,331 | -11% | 0 | 0 | — |
case-21 | pass→pass | 10,193 | 9,944 | -2% | 1 | 1 | 0% | 1,676 | 2,309 | +38% | 0 | 0 | — |
case-22 | pass→fail | 10,005 | 3,191 | -68% | 1 | 1 | 0% | 1,406 | 1,533 | +9% | 0 | 0 | — |
case-23 | pass→pass | 15,558 | 4,634 | -70% | 1 | 1 | 0% | 2,127 | 1,518 | -29% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +35 percentage points is the difference between those two pass rates over the 23 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.