eval/skills/record/SKILL.md
Record terminal sessions (asciinema) or desktop video (pixelflux/wf-recorder). MUST be invoked before any work involving: charly eval record commands, terminal recording, desktop video recording, or session capture.
npx skillsauth add overthinkos/overthink-plugins recordInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
charly eval record manages recording sessions inside running containers. It is one
of the live-container verbs under charly eval (see /charly-eval:eval for the full
family: cdp/wl/dbus/vnc/mcp/spice/libvirt/record). It supports two modes:
.cast filesAll recording sessions are managed via tmux sessions with a record- prefix. This provides background execution, output monitoring, and clean start/stop lifecycle.
| Action | Command | Description |
|--------|---------|-------------|
| Start recording | charly eval record start <image> [-n NAME] [-m MODE] | Start a recording session |
| Stop recording | charly eval record stop <image> [-n NAME] [-o FILE] | Stop and optionally copy to host |
| List recordings | charly eval record list <image> | Show active recording sessions |
| Send command | charly eval record cmd <image> "command" [-n NAME] | Send command to recording terminal |
charly eval record start — Start Recordingcharly eval record start <image> [--name NAME] [--mode MODE] [--fps FPS] [--audio] [-i INSTANCE]
Flags:
-n, --name — Recording name (default: default). Multiple concurrent recordings supported-m, --mode — terminal (asciinema), desktop (video), or auto (auto-detect)--fps — Frames per second for desktop recording (default: 30)--audio — Include PulseAudio audio capture (desktop mode)Auto-detection order: pixelflux-record → wf-recorder → asciinema
Output files (inside container):
/tmp/charly-recordings/<name>.cast/tmp/charly-recordings/<name>.mp4charly eval record stop — Stop Recordingcharly eval record stop <image> [--name NAME] [--output FILE] [-i INSTANCE]
-o, --output copies the recording file from the container to the hostcharly eval record list — List Active Recordingscharly eval record list <image> [-i INSTANCE]
Shows all active recording sessions with name, mode, and file path.
charly eval record cmd — Send Command to Recordingcharly eval record cmd <image> "command" [--name NAME] [-i INSTANCE]
Sends a command to the recording's tmux session. For terminal recordings, the command and its output become part of the .cast file. Convenience wrapper for charly tmux send <image> -s record-<name> "command" --enter. Sends a desktop notification when the command is dispatched (if a notification daemon like swaync is running).
| Tool | Layer | Desktop | Protocol |
|------|-------|---------|----------|
| asciinema | asciinema (or dev-tools) | N/A | Terminal capture |
| pixelflux-record | wl-record-pixelflux | selkies-desktop | selkies WebSocket capture bridge → H.264 → ffmpeg |
| wf-recorder | wf-recorder | sway-desktop | wlr-screencopy |
# Start recording
charly eval record start openclaw -n demo --mode terminal
# Run commands (each appears in the recording)
charly eval record cmd openclaw "echo 'Hello World'" -n demo
charly eval record cmd openclaw "ls -la" -n demo
charly eval record cmd openclaw "charly --help" -n demo
# Or attach interactively
charly tmux attach openclaw -s record-demo
# ... interact, Ctrl-b d to detach
# Stop and save
charly eval record stop openclaw -n demo -o demo.cast
# Play back locally
asciinema play demo.cast
# Start desktop video recording with audio
charly eval record start selkies-desktop -n walkthrough --mode desktop --audio
# Run CLI commands (visible in recording)
charly eval record cmd selkies-desktop "git status" -n walkthrough
charly eval record cmd selkies-desktop "docker ps" -n walkthrough
# Interact with browser
charly eval cdp open selkies-desktop "https://github.com"
charly eval wl click selkies-desktop 640 360
# Stop and save
charly eval record stop selkies-desktop -n walkthrough -o walkthrough.mp4
asciinema layer (or dev-tools)wl-record-pixelflux layer (included in selkies-desktop metalayer)wf-recorder layer (included in sway-desktop metalayer)tmux layer must be present (for session management)charly eval record cmd uses the shared sendTmuxCommand() helper (also used by charly tmux cmd)sendContainerNotification() on every charly eval record cmd dispatch (always-on, no --no-notify flag — recording context always benefits from notification)sendContainerNotification() → tries in-container charly eval dbus notify . → falls back to gdbus call → silently skips if neither available/charly-automation:tmux — Underlying tmux session management (recording sessions use record- prefix). charly tmux cmd uses the same sendTmuxCommand helper/charly-coder:asciinema — Terminal recording layer/charly-selkies:wl-record-pixelflux — Pixelflux video recording layer/charly-selkies:wf-recorder — wf-recorder video recording layer/charly-selkies:selkies-desktop-layer — Desktop metalayer with pixelflux recording/charly-selkies:sway-desktop — Desktop metalayer with wf-recorder/charly-infrastructure:dbus-layer — D-Bus session bus (required for notification delivery)/charly-selkies:swaync — Notification daemon (displays the notifications)/charly-eval:wl — Desktop automation (used alongside recording)/charly-eval:wl-overlay — Fullscreen overlays (title cards, lower-thirds, fades — compose with recording workflow)/charly-eval:cdp — Chrome automation (used alongside recording)MUST be invoked when the task involves:
charly eval record commandstools
Use when authoring or modifying a charly PLUGIN — a candy with a `plugin:` block that contributes Providers (verbs/kinds/deploy-targets/steps/builders/commands), its own CUE schema, builtin (compiled-in) or external (out-of-tree git repo). Covers the unified Provider model, the per-plugin CUE-schema contract (single source → Go params for dev + schema-over-Describe RPC for runtime), the SDK, and the loader.
tools
The CUE data-validation / configuration CLI (cue), pinned to v0.16.1. Use when working with the cue candy, installing the cue binary into a box or onto a target:local dev host, or running the offline schema-vendoring pipeline that feeds charly's egress validation.
tools
CUE EGRESS validation — validating (and, where it adds value, generating) the config files charly WRITES to a system BEFORE the bytes hit disk. MUST be invoked before working on charly/egress.go, the vendored schemas under candy/plugin-egress/egress-schemas/vendor/, the ValidateEgress / registerVendoredEgressKind path, the offline `task cue:vendor` pipeline, or adding an egress schema for any written artifact (cloud-init, k8s manifests, traefik routes, runtime config, install ledger, systemd/quadlet units, ssh_config, libvirt XML).
tools
Kubernetes cluster-probe declarative check verb — the `kube:` check verb (nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs) served out-of-process by the candy/plugin-kube plugin (vendored client-go; no external kubectl required).