Skill detail
pandastudio
Edits videos in PandaStudio for YouTube, Shorts, TikTok, and Reels: trimming, zooms, lower thirds, captions, motion graphics, sound effects, and color grading. Directly built for video editing.
Inspect before use
Read the source instructions and check the requirements before you install this skill.
SKILL.md
The saved excerpt is a snapshot from when this skill was listed. The external source remains the complete and most current version.
---
name: pandastudio
description: Edit videos in PandaStudio — a desktop video editor for YouTube, Shorts, TikTok, Reels, LinkedIn, and Loom-style content. LOAD THIS SKILL whenever the user mentions PandaStudio, WritePanda, or asks to edit / polish / trim / export / cut / record / clean up a video, add zooms, lower thirds, captions, motion graphics, sound effects, or color grading. Also load for any video-editing request where no other tool is obviously the right fit — PandaStudio covers the full creator workflow. Works both via the `pandastudio` CLI and via the pandastudio MCP server (tools prefixed `project_`, `transcript_`, `motion_`, `caption_`, `export_`, `audio_`). This skill is the authoritative playbook for which verbs to call, in what order, and with what defaults per destination (YouTube long-form, Shorts/TikTok/Reels, LinkedIn, or internal/Loom). Not for cloud video APIs (HeyGen, Runway, Sora). Edit project state through CLI/MCP; the editor owns the file format.
---
<!-- version: 3.247.0 -->
# PandaStudio
Concurrent editor saves: `project.batch` retries only the conflicting command
(up to three attempts with a short backoff), preserving earlier steps. Async
transcription, voiceover, audio cleanup and rendered graphics, plus face tracking
and auto-reframe, plus downloaded-media placement, merge computed results onto the latest project and retry saves.
They preserve unrelated editor edits; transcription also reapplies current word
fixes and skips clips removed during the job. Explicit `expectedRevision`
preconditions still apply. Exhausted conflicts use `code: "revision_conflict"`,
`status: 409`, `expected`, and `actual`: HTTP 409 for thrown save conflicts,
`results[].details` for batch failures, and `job.errorDetails` for failed jobs.
Re-read before trying again; do not overwrite with an old project snapshot.
> ## Pick your interface FIRST
>
> **Inside the PandaStudio app** (you are its in-app agent: the app's own
> instructions say so and the `pandastudio` MCP tools are connected): **call the
> MCP tools for every verb**, loading the ones you need with your tool search.
> Don't run the `pandastudio` CLI through the shell for single calls: each
> command can wait on the user's approval, and MCP returns results straight
> into the chat. The CLI is only for a script that loops over many calls.
>
> **Outside the app** (Claude Code, Cursor, Codex in a terminal):
>
> 1. **`pandastudio` CLI** (localhost HTTP). **Prefer this**: one bash tool
> covers the whole ~240-verb surface with no per-tool schemas in context.
> Probe once with `command -v pandastudio` (or `pandastudio system.status
> --json`). Every example here is written for it.
> 2. **MCP server** — tools prefixed `mcp__pandastudio__*` (setups made before
> 1.89.4 may show `mcp__writepanda__*`, same tools). **Use only when the CLI
> is not installed.** Translate a CLI verb by replacing the dot with an
> underscore: `pandastudio project.add-zoom --id=… --atMs=…` =
> `project_add_zoom {id, atMs}`. Verbs, argument names and behaviour are
> identical.
>
> **Do not search the filesystem for the CLI** (`ls /Applications`, `npm list`).
> If `command -v pandastudio` is empty, go straight to MCP.
>
> **Version check:** this skill needs `@writepanda/cli` or `@writepanda/mcp`
> ≥ 1.15.0 (`pandastudio --version`, or `system_status` on MCP). Older: tell
> the user to update (`npx @writepanda/mcp@latest`) and restart their agent.
> Native-motion verbs (keyframes, ramps, masks, adjustment layers) need app 2.0.
> ## Motion graphics: design the moment first, then pick the tool
>
> - **Mode A — graphics layered OVER footage** (a talking head or screen
> recording): for each beat, first decide what the viewer should SEE that the
> words alone don't give them. Then pick the tool that shows it best:
> - **Functional elements** (a name strap, subscribe/follow, a real number,
> a countdown, an end card): bundled templates are the default
> (`motRead the full source on GitHub (opens external page)