Video Editing
LeoYeAI/openclaw-master-skills
Automated video editing skill for talk/vlog/standup videos. An agent skill from LeoYeAI/openclaw-master-skills.
Record a demo video of a desktop app — launch it, play a scripted scenario with smooth synthetic mouse input, and capture the screen (cursor and click highlights included) straight to an…
$ npx skills add libnativeapi/nativeapi --skill record-demo -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install libnativeapi/nativeapi record-demo --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/libnativeapi/nativeapi.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/record-demo .claude/skills/record-demo && 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 "record-demo" agent skill from https://github.com/libnativeapi/nativeapi/tree/main/.agents/skills/record-demo into .claude/skills/record-demo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-demo", 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/libnativeapi/nativeapi/tree/main/.agents/skills/record-demoType 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 libnativeapi/nativeapi --skill record-demo -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install libnativeapi/nativeapi record-demo --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/libnativeapi/nativeapi.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/record-demo .agents/skills/record-demo && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "record-demo" agent skill from https://github.com/libnativeapi/nativeapi/tree/main/.agents/skills/record-demo into .agents/skills/record-demo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-demo", 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 libnativeapi/nativeapi --skill record-demo -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install libnativeapi/nativeapi record-demo --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/libnativeapi/nativeapi.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/record-demo .cursor/skills/record-demo && 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 "record-demo" agent skill from https://github.com/libnativeapi/nativeapi/tree/main/.agents/skills/record-demo into .cursor/skills/record-demo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-demo", 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/libnativeapi/nativeapi.git --path .agents/skills/record-demo--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 libnativeapi/nativeapi --skill record-demo -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install libnativeapi/nativeapi record-demo --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/libnativeapi/nativeapi.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/record-demo .gemini/skills/record-demo && 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 "record-demo" agent skill from https://github.com/libnativeapi/nativeapi/tree/main/.agents/skills/record-demo into .gemini/skills/record-demo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-demo", 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 libnativeapi/nativeapi record-demoInstalls 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 libnativeapi/nativeapi --skill record-demo -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/libnativeapi/nativeapi.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/record-demo .github/skills/record-demo && 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 "record-demo" agent skill from https://github.com/libnativeapi/nativeapi/tree/main/.agents/skills/record-demo into .github/skills/record-demo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-demo", 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 libnativeapi/nativeapi --skill record-demo -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install libnativeapi/nativeapi record-demo --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/libnativeapi/nativeapi.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/record-demo .opencode/skills/record-demo && 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 "record-demo" agent skill from https://github.com/libnativeapi/nativeapi/tree/main/.agents/skills/record-demo into .opencode/skills/record-demo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-demo", 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.
record-demoRecord a demo video of a desktop app — launch it, play a scripted scenario with smooth synthetic mouse input, and capture the screen (cursor and click highlights included) straight to an…
Record Demo is an agent skill from libnativeapi/nativeapi. Record a demo video of a desktop app — launch it, play a scripted scenario with smooth synthetic mouse input, and capture the screen (cursor and click highlights included) straight to an X/Twitter-ready MP4 (H.264, yuv420p, no audio, no keyboard input) — on macOS locally or on a remote Windows host, where the MP4 is encoded on the host and copied back. Use this whenever the user wants a demo video, screen recording, or "something to post" showing a feature or an example app, or asks to re-record after a UI change.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including scripts (for example `scripts/linux/recorder.py`, `scripts/macos/recorder.py` and `scripts/record_remote.sh`).
It sits in Media & Creative, covering Video production. It works with macOS, X (Twitter), Linux and FFmpeg. The repository describes itself as: Unified access to native system APIs (windows, tray icons, menus, displays, dialogs, …) for Dart/Flutter, Rust, C, JS/TS and Python, built on one C++ core. The licence is MIT.
Read from SKILL.md and the folder at commit ad9fbc4. 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.
Ships 5 files in scripts/ (Python, Shell and PowerShell), which the agent can run.
Shell commands in SKILL.md call:
ffmpeggitffprobeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
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.
Record Demo loads about 2.9k tokens when it runs. Until then it costs about 133 tokens; SKILL.md has 1,421 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); the scripts in this folder are not scanned.
The full file from libnativeapi/nativeapi at commit ad9fbc4, republished under its MIT licence (© libnativeapi). 1,421 words, ~2,880 tokens.
.claude/skills/record-demo/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.A demo is a gui-test scenario played slowly and nicely, with a recorder running.
Everything in gui-test (safety rules!) applies; this skill adds the recorders and the
pacing.
It only records. The output is the take as captured, encoded once to MP4 on the
machine that recorded it, named <scenario script name>-<os>.mp4. No trimming, no
re-encoding, no raw/cut pairs — if the user wants a cut, that is a separate request.
| macOS | Windows | Linux (GNOME/Wayland) | |
|---|---|---|---|
| recorder | scripts/macos/recorder.py (Recorder) | scripts/windows/recorder.ps1 (Start-Recording / Stop-Recording) | scripts/linux/recorder.py (Recorder, grab) |
| capture | screencapture -v -C -k → .mov → ffmpeg → .mp4 | GDI screen grabs → JPEG frames → ffmpeg on the host → .mp4 | Mutter ScreenCast → PipeWire → jpegenc → JPEG frames → ffmpeg on the Mac → .mp4 |
| needs | ffmpeg (or avconvert), Screen Recording permission | ffmpeg on the Windows host (see below) | PyGObject and gst-launch-1.0 with pipewiresrc/jpegenc on the host, ffmpeg on the Mac |
| template | any gui-test script wrapped in Recorder | templates/record_template.ps1 | any gui-test script wrapped in Recorder |
| run | the scenario script itself | scripts/record_remote.sh from the Mac | scripts/record_remote_linux.sh from the Mac |
The recorders know nothing about any particular app. Scenarios are project code, not
part of this skill — in this workspace they live in tools/gui/ (*_demo.py,
*_demo.ps1); read those before writing a new one, and put new ones there. Videos go to
one git-ignored directory (here tools/gui/output/); a new take overwrites the old one.
from recorder import Recorder # sys.path: .agents/skills/record-demo/scripts/macos
recorder = Recorder('output/<script>-macos.mp4')
recorder.start() # SystemExit with a hint if permission is missing
try:
play_scenarios() # gui-test harness calls
finally:
recorder.stop()
recorder.convert() # → H.264, 60 fps, fits 1920×1200, no audioscreencapture exits at
once and Recorder says so; screencapture -x /tmp/t.png is a quick check. Only the
user can grant it, and the app has to be restarted afterwards.ffmpeg -ss <t> -i x.mp4 -frames:v 1 f.jpg,
then Read it) and warn them if private content (other projects, chats, paths) is
visible.# in the scenario (runs on the host's desktop session)
. "$PSScriptRoot\recorder.ps1"
$name = [IO.Path]::GetFileNameWithoutExtension($PSCommandPath)
Start-Recording "$RemoteScratch\$name-windows.mp4"
try { ...scenario... } finally { Say "saved $(Stop-Recording)" }# from the Mac: play, record and encode on the host, copy the MP4 into <output dir>
.agents/skills/record-demo/scripts/record_remote.sh <host> <scenario.ps1> <output dir>It runs the remote-hosts steps (setup, desktop, pull, then removes the MP4 from
the host), keeps the scenario log next to the video, and fails when the log shows no
saved video or an ERROR.
Stop-Recording encodes with the frames' real timing (the grabber reaches ~21–25 fps
on a 2560×1600 laptop; the MP4 is resampled to 30 fps), fits 1920×1200, then deletes
the frames. Encoding ~2 minutes of frames takes about a minute; allow for it in the
desktop timeout.Get-Ffmpeg looks on PATH and in
%LOCALAPPDATA%\Programs\ffmpeg\bin, scoop, winget and chocolatey locations. To
install it on a host that has none: download the official Windows build
(github.com/GyanD/codexffmpeg releases, ffmpeg-<ver>-essentials_build.zip) — on
the Mac if the host cannot reach GitHub —, check its sha256 against the release's
asset digest, remote.sh <host> push it, and extract it on the host to
%LOCALAPPDATA%\Programs\ffmpeg (add bin to the user PATH). Package managers are
optional: the test laptop's scoop was broken (self-update fails, the 7zip dependency
would not install), and winget asks to accept agreements.remote-hosts), from the checkout
you mean to show — check that the core submodule is
actually checked out at the recorded commit (git submodule update), not just
pointed at it.desktop_survey.ps1): another app's window — especially a maximized one — becomes
the backdrop of the video and shows whatever the user had open, besides blocking
clicks. Ask the user to clear it (do not close their apps yourself unless they ask).desktop verb shares one
scheduled task and job.* files per host. When another session also drives the same
machines, agree on turns first.import sys; sys.path.insert(0, '.agents/skills/record-demo/scripts/linux')
from recorder import Recorder, grab
frame = grab('/tmp/look.png') # one PNG of the monitor, for locating windows
rec = Recorder('$REMOTE_SCRATCH/<name>-linux.mp4') # frames land in <output>.frames/
rec.start() # returns once the stream really is producing frames
try:
... # play the scenario
finally:
rec.stop(); rec.report() # prints RECORD_FRAMES <dir> — the wrapper reads that line# from the Mac: play on the host, pull the frames, encode here, copy the MP4 into <output dir>
.agents/skills/record-demo/scripts/record_remote_linux.sh <host> <scenario.py> <output dir>There is no screen-capture shortcut on GNOME 46 to fall back on: gnome-screenshot is not
installed, org.gnome.Shell.Screenshot answers AccessDenied, and XTEST/Xlib see no Wayland
window. Capture goes through org.gnome.Mutter.ScreenCast → PipeWire, and the pointer is
only in the picture if the stream is a real monitor recorded with cursor-mode: 1 (Mutter
composites the cursor in; the frames have it — check one before publishing).
x264enc, avenc_h264, openh264enc, vaapih264* were all
missing on ours). So the recorder writes one JPEG per frame plus their real write times —
the source is live, so the gaps between files are the gaps between frames — and the wrapper
pulls the frames to the Mac and encodes them there (recorder.encode, a variable-framerate
concat list, H.264 High, yuv420p, no audio, resampled to 30 fps, fitted to 1920×1200).
Frames are scaled down to fit 1920×1200 at capture time: the stream is the whole monitor
(2560×1440 here) and there is no point shipping pixels the MP4 will drop.videoscale
fits 1080p first, on a 2-core Celeron. Mutter produces frames on damage, so a still picture
costs nothing and only motion costs frames — which is exactly where a demo needs them./sys/class/drm/*/status says disconnected), DisplayConfig reports no monitors at all:
there is nothing to RecordMonitor, no wl_output for the app to place a window on, and
ScreenCast.RecordVirtual is not a way out — a virtual monitor is not a wl_output
(GDK logs gdk_monitor_get_scale_factor: assertion 'GDK_IS_MONITOR (monitor)' failed, the
app's windows never appear on it) and Mutter paints no pointer into a virtual stream, in
cursor-mode 0 or 1. Check /sys/class/drm/*/status and DisplayConfig before spending a take,
and report the blocker instead of shipping a cursor-less video.gui-test's, but there is no Xlib owner check to lean on for
a Wayland client: refuse any press that the captured frame does not place inside the app's
own located window, keep generous margins, and prefer driving the pointer only where a
probe can prove the click arrived.What makes a scenario watchable:
--pace /
$Pace) that scales every motion and pause, with floors for the pauses that wait
for windows, so the tempo can be tuned in one place.gui-test (no recorder) before spending a take on
it; give scripts a way to run a single scenario and to leave the app open.ffprobe -v error -show_entries stream=codec_name,pix_fmt,width,height,r_frame_rate:format=duration x.mp4
→ h264, yuv420p, ≤ 1920×1200, ≤ 60 fps, no audio stream (X also wants ≤ 140 s and
≤ 512 MB).© libnativeapi, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts) in .agents/skills/record-demo of libnativeapi/nativeapi.
Open the folder on GitHubat commit ad9fbc4
Record Demo 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 |
|---|---|---|---|---|---|---|
| Record Demo this skilllibnativeapi/nativeapi | 161 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Video EditingLeoYeAI/openclaw-master-skills | 2.2k | — | ~2.7k | Automated safety check: Notes | MIT | |
| Video Clipping ReferenceRightNow-AI/openfang | 18k | — | ~4.1k | Automated safety check: Warn | Apache-2.0 | |
| Ppt CompressorLeoYeAI/openclaw-master-skills | 2.2k | — | ~3.9k | Automated safety check: Pass | MIT | |
| Vlog Auto Editznyupup/ai-video-editing-skill | 145 | — | ~6.8k | Automated safety check: Pass | MIT | |
| Transcribebadlogic/pi-skills | 2.6k | — | ~264 | Automated safety check: Pass | MIT |
LeoYeAI/openclaw-master-skills
Automated video editing skill for talk/vlog/standup videos. An agent skill from LeoYeAI/openclaw-master-skills.
RightNow-AI/openfang
Command reference for cutting clips from online video: yt-dlp downloads, whisper transcription, SRT subtitle files and ffmpeg processing, with Windows, macOS and Linux differences.
LeoYeAI/openclaw-master-skills
This skill should be used when the user wants to compress a PowerPoint (.pptx) file by reducing the size of embedded videos and large images.
znyupup/ai-video-editing-skill
AI Agent自动剪辑旅行Vlog的完整工作流。从原始素材到成品视频,系统级只需ffmpeg,其余在Python venv内完成。by nyx研究所 (GitHub @znyupup · B站/小红书 @nyx研究所)
badlogic/pi-skills
Local speech-to-text transcription on Apple Silicon macOS. An agent skill from badlogic/pi-skills.
mathiaschu/watch
Watch a video from YouTube, Instagram, X/Twitter, Vimeo, TikTok or any of ~1800 yt-dlp sites (or a local path).
libnativeapi/nativeapi
Build, run, and GUI-test on another machine over SSH — the user's Windows laptop today, Linux or other macOS machines tomorrow — with one symmetric CLI for every OS: push scripts, run them either in…
libnativeapi/nativeapi
Find where widgets are on screen in a running debug Flutter desktop app (macOS, Windows, Linux) by reading its render tree through the VM service — no hard-coded coordinates, no screenshots, works…
libnativeapi/nativeapi
End-to-end test a desktop app (Flutter desktop apps and plain native executables such as C++ examples) by launching the real app, driving it with guarded synthetic mouse input — eased moves, clicks…
libnativeapi/nativeapi
Carry a change to the C++ public API in core/ all the way downstream — design check, header edit, six platform implementations, C ABI + Rust/Dart/C/JS/Python regeneration, per-binding verification…
Works with
Categories
Record a demo video of a desktop app — launch it, play a scripted scenario with smooth synthetic mouse input, and capture the screen (cursor and click highlights included) straight to an…. Record Demo is an agent skill from libnativeapi/nativeapi.264, yuv420p, no audio, no keyboard input) — on macOS locally or on a remote Windows host, where the MP4 is encoded on the host and copied back.
Record Demo fits situations like: wants a demo video; screen recording; something to post showing a feature; asks to re-record after a UI change.
Run `npx skills add libnativeapi/nativeapi --skill record-demo -a claude-code`. Or copy the skill folder (.agents/skills/record-demo in libnativeapi/nativeapi) into .claude/skills/record-demo in your project. Claude Code loads it when a task matches its description.
Run `npx skills add libnativeapi/nativeapi --skill record-demo -a codex`. Or copy the skill folder (.agents/skills/record-demo in libnativeapi/nativeapi) into .agents/skills/record-demo 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 libnativeapi/nativeapi --skill record-demo -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/record-demo, .gemini/skills/record-demo, .github/skills/record-demo and .opencode/skills/record-demo in your project.
Going by SKILL.md and its folder, Record Demo needs Python, a shell and PowerShell for the scripts in its folder and the command-line tools its instructions call (ffmpeg, git and ffprobe). Our summary lists: Python 3; A Bash shell; PowerShell.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Record Demo 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.9k tokens (SKILL.md is roughly 12k 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 Record Demo: Video Editing (LeoYeAI/openclaw-master-skills, 2.2k stars), Video Clipping Reference (RightNow-AI/openfang, 18k stars), Ppt Compressor (LeoYeAI/openclaw-master-skills, 2.2k stars) and Vlog Auto Edit (znyupup/ai-video-editing-skill, 145 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
libnativeapi (a GitHub organization) maintains it in libnativeapi/nativeapi, which has 161 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 7, 2026.
Source: libnativeapi/nativeapi on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.