
studio-setup
Sets up the creator's video editing studio, for shorts and YouTube videos, on their computer and in their project - tools, the video-agent/ folder, the render engine, the creator's voice.md, their default editing style (an onboarding on their colors, paper, fonts, captions, sound, Instagram CTA, real tool logos, logo and end card, with a preview on their own footage), permissions, and the optional accounts (Treg for Instagram, TikTok and YouTube, an ElevenLabs key, Codex). Use when the user says setup, onboarding, install, "start here", configure, connect my account, Treg, first time using studio-script, short-editing, publish or any video skill, or wants to update their voice, niche, CTA, brand color, look, font, captions, sound effects, logo or tool logos (/studio-setup style). Checks Node, ffmpeg, yt-dlp and git with install commands for macOS, Windows and Linux, writes voice.md from their own videos or a short interview, pre-approves the tool commands in .claude/settings.json.
- Installs
- 293
- Last 24h
- +29
- Trending rank
- #4430
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/melvynx/video-agent-skills --skill studio-setup- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads studio-setup automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Studio Setup
About 15 minutes, once. At the end the creator has:
- the tools the other skills call, installed and checked,
video-agent/voice.md: who they are, how they talk, what they believe, what they can prove. Every script is written from it,video-agent/styles/default/style.json: their look on top of the split-screen paper layout (their color, fonts, captions, paper, pace, sound, Instagram CTA), with the real logos of the tools they talk about. Every edit uses it,- the render engine ready (Chrome, whisper.cpp, the music beds), so the first edit starts right away,
- permission rules, so Claude can run ffmpeg, yt-dlp and the engine without asking each time,
- if they want: their accounts connected through Treg (audit and publishing), and the keys for translation and images.
How to run it
- Talk in the creator's language. Simple words, no jargon.
- One question per message. Offer choices when you can, recommended first.
- Never invent anything about them: a fact you don't have becomes a question or a
{{placeholder}}.
1. Tools
Run the checks and show one line per tool (✓ version, or ✗ missing):
node -v
ffmpeg -version
yt-dlp --version
deno --version
git --version
| Tool | Used by | macOS | Windows | Linux |
|---|---|---|---|---|
| Node 20+ (22 LTS recommended) | short-editing (the render engine) | brew install node | winget install OpenJS.NodeJS.LTS | nodejs.org or your package manager |
| ffmpeg | short-editing, steal, clips, short-translate, publish | brew install ffmpeg | winget install Gyan.FFmpeg | sudo apt install ffmpeg |
| yt-dlp | studio-script viral, steal, clips, voice.md from videos | brew install yt-dlp | winget install yt-dlp.yt-dlp | pipx install "yt-dlp[default]" |
| deno | yt-dlp on YouTube (it needs a JavaScript runtime) | comes with yt-dlp | winget install DenoLand.Deno | curl -fsSL https://deno.land/install.sh | sh |
| git | installing the skills | xcode-select --install | winget install Git.Git | sudo apt install git |
| Codex (optional) | codex-images | npm i -g @openai/codex, then codex login | same | same |
Give the commands for what is missing and let them run them (or run them yourself if they say so). Scripting-only users (studio-script, its viral mode included) only need yt-dlp and deno. Codex is only for /codex-images and needs a ChatGPT plan; skip it if they don't want images.
- Windows: after
winget, close and reopen the terminal (and Claude Code), or the new commands are not found. - YouTube changes often. When yt-dlp fails on a link that plays in the browser, update it first (
brew upgrade yt-dlp,winget upgrade yt-dlp.yt-dlp,pipx upgrade yt-dlp).
2. The folder
Create it at the root of the current project:
video-agent/
├── voice.md who they are and how they talk (step 4)
├── swipe.md hooks that worked in their niche (`/studio-script viral`)
├── audit.md what works on their own Instagram (insta-audit)
├── audits/ full Instagram reports, one folder per account and run (insta-audit @handle)
├── log.md one line per script written, so nothing repeats
├── scripts/ one file per week (studio-script)
├── takes/ raw recordings (phone, camera, webcam, screen)
├── style.json {"default": "default"}: the style every edit uses (step 5)
├── styles/ default/ (their look, step 5), and styles copied from other creators (steal)
├── edits/ one folder per edited video (short-editing): source/spec.js, output/<name>.mp4 + post.md, cover.jpg, published.md
├── repurpose/ one plan per long video (clips)
├── images/ generated images not tied to a video (codex-images)
├── .env their API keys, never shared (step 7)
└── .tmp/ scratch files, deleted after each run
log.md starts with # Script log, swipe.md with # Swipe file.
If the project is in git, add these lines to its .gitignore (videos are heavy; the text files stay tracked):
video-agent/takes/
video-agent/edits/**/*.mp4
video-agent/edits/**/assets/
video-agent/edits/**/stills/
.claude/skills/short-editing/.runtime/
.claude/skills/short-editing/engine/node_modules/
video-agent/.tmp/
video-agent/.env
video-agent/.env holds keys: it must be ignored even if they skip the rest.
3. The engine
The render engine ships inside the short-editing skill (<skill> = that skill's folder, e.g. .claude/skills/short-editing). Its first setup installs the engine packages (15 MB), a Chromium when no Chrome is installed (100 MB), whisper.cpp and its speech model (0.5 GB) and the 8 music beds: 3 to 6 minutes, once. Ask: now (recommended if they will edit soon, and it lets step 5 show their style on their own footage), or later (short-editing runs it the first time). Only for short-editing, clips and short-translate; scripting-only users skip it.
node <skill>/engine/setup.mjs --check || node <skill>/engine/setup.mjs
Say what is downloading and how big before starting. ffmpeg missing: it prints the install command.
4. voice.md
First the setting at the top of the file: the language they record in (their brand color is asked in step 5). Then ask how to build the rest:
- From their videos (recommended when they have posted before): 3 to 5 links of their best talking videos (YouTube, Shorts, TikTok, Instagram reels). Pull the transcripts (
<lang>= their language code:en,fr,es):Read them and fill the template from what they actually say: their real phrases, their pace (words ÷ minutes of speech), the words they repeat, the way they open and close. Then ask only what the transcripts can't tell (positions, proof, off limits, the ask). Deleteyt-dlp --skip-download --write-auto-subs --write-subs --sub-langs "<lang>.*" --sub-format vtt -o "video-agent/.tmp/%(id)s.%(ext)s" "<url>"video-agent/.tmp/after. YouTube links almost always give a transcript. TikTok sometimes does, Instagram almost never: for those, ask for a YouTube link or switch to the interview. - From an interview: ask the template's questions one at a time, in plain words ("What do you believe that most people in your niche get wrong?").
Either way, ask them to paste 3 short texts they wrote themselves, before any AI tool (a caption, a message, an email). They go in "Real samples" and teach the scripts their rhythm.
Write video-agent/voice.md from references/voice-template.md. Then read it back to them in 5 lines and ask what is wrong. A voice file is never finished: say they can run /studio-setup voice any time to update it.
5. Style
Five minutes. Every edit has the same finished layout, the split-screen paper look: boards on a textured paper above the camera card, hard cuts between split, paper only and full camera, captions on the seam, a comment-sheet CTA (style.md). This step makes it theirs: video-agent/styles/default/style.json. The format and the five tested looks: looks.md; every key: style-schema.md. Read both first.
Say it in one line before starting: "The default already looks finished; I'll ask 7 quick questions to make it yours, then show it on your own video." Then one question per message, choices with the recommended one first, and their answer can always be "default" or "skip". Use what voice.md already says (niche, tone, the ask) to pick the recommendation and to skip a question it already answers.
- Look: show the five looks of
<skill>/assets/looks.jsonin one line each (label+says): default (minimal: the system font, the camera full width, mono caps captions on a black band on the seam, recommended), classique (sticker captions), papier (framed camera photo, the said word on a color block), pop (podcast, opinion), poster (fast, hard cuts). Their pick'sstylepatch is the start of the file. - Accent color: "Your brand color? A hex code, or a color in words." They name a color: turn it into a hex →
colors.accent. None: keep the look's. It marks the accent words, the caption block, numbers, so it must be strong (not a pastel). - Fonts: "Keep the system font (the one of the Mac, San Francisco; Segoe UI on Windows, recommended), or Bricolage Grotesque (modern, tight), Poppins (round, friendly), Archivo (heavy, condensed), Inter (neutral)?" The system font is
system-ui, -apple-system, Segoe UI, Helvetica Neue, Arial, sans-serif. →font.family,display.font/display.text. Their own font file: copy it tostyles/default/assets/fonts/and setfont.src. - Captions: "Band: mono capitals, white on a black rounded band on the seam, 3 words at a time (
band+ JetBrains Mono, recommended), minimal white words on the video, each one appearing when said (rise+block: false+straddle+straddleDy: 90), the said word on a color block (rise), hard shadow (hard) or sticker?" Then "Normal size, or bigger?" (bigger =captions.size96). UPPERCASE =captions.upper: true. - Rhythm: "Fast (1.15x, the default), Calm (1.05x) or Natural (1x)?" →
pace.speed. - Instagram CTA: "Your Instagram handle, and the word you ask people to comment (GUIDE, LINK, the product name)?" →
creator.handle,creator.name, and a note"Comment word: <WORD>"innotes. Alsocreator.lang(their recording language) andcreator.nichefrom voice.md. - Tools you talk about: "Which apps or tools do you name most in your videos?" Up to 8. For each, fetch the real logo (looks.md, "Logos"), save it as
video-agent/styles/default/assets/logos/<tool>.png. A logo you can't find for sure: ask them for the file, never draw a look-alike.
Write video-agent/styles/default/style.json ("version": 1, "name", the look's patch, then their answers; only keys that differ from the engine defaults) and video-agent/style.json = {"default": "default"}. Check it parses: node -e 'JSON.parse(require("fs").readFileSync("video-agent/styles/default/style.json","utf8"))'.
Preview, when the engine is set up (step 3) and they have a take of 10 s or more in video-agent/takes/:
node <skill>/engine/short.mjs init video-agent/edits/short-style-test --source "<take>"
Then in its source/spec.js add one board around second 1 to 4 of the take (a text with their accent word, their first tool's logo; scene-library.md), and:
node <skill>/engine/short.mjs words video-agent/edits/short-style-test
node <skill>/engine/short.mjs prepare video-agent/edits/short-style-test
node <skill>/engine/short.mjs stills video-agent/edits/short-style-test 0.5,2,5
Read the JPGs in stills/ yourself first: the accent readable on the paper, white caption text readable on its block, the logo crisp, nothing cut at the edges. Fix what fails, then show them and ask: "Keep it, or change one thing?" A change = edit style.json, init again (it snapshots the style), new stills. Trash short-style-test after. No take yet: describe the look in 3 lines, the first edit shows it.
They can run /studio-setup style any time to change it. A creator's style copied with /steal sits next to it (video-agent/styles/<name>/) and is used with /short-editing <take> style <name>.
6. Permissions
The other skills run the same few commands again and again. Pre-approve them for this project. Show the rules, ask, then merge them into .claude/settings.json. Create the file if it is missing. Keep every key and rule already there, and never remove anything.
{
"permissions": {
"allow": [
"Bash(yt-dlp *)",
"Bash(ffmpeg *)",
"Bash(ffprobe *)",
"Bash(node .claude/skills/short-editing/engine/*)"
]
}
}
- Only these. Never add
Bash(*),Bash(rm *),Bash(curl *)or a rule for a whole interpreter (Bash(node *),Bash(python *)). - Rules in the shared
settings.jsonapply once the folder is trusted. A creator who keeps this project in git and doesn't want to share the rules can use.claude/settings.local.jsoninstead (same format, personal). - Each skill also lists its own commands in its
allowed-tools, which covers the turn the skill runs in. These rules cover every other turn.
7. Accounts and keys (optional)
Three things, each only if they want the skill that needs it. Ask once, in one message:
| For | What | Cost |
|---|---|---|
/insta-audit and /publish | Treg, with their Instagram, TikTok and YouTube connected | free on their own accounts |
exact transcripts in /short-editing (every retake and false start heard, so they get cut), /short-translate, /steal's music level under the voice (sound effects ship with the pack, no key needed) | an ElevenLabs API key (recommended) | their ElevenLabs plan |
/codex-images | Codex logged in with their ChatGPT account | their ChatGPT plan |
ElevenLabs: they create a key at elevenlabs.io/app/settings/api-keys and paste it themselves into video-agent/.env as ELEVENLABS_API_KEY=... (create the empty file and open it for them). Never ask for a key in the chat. Check it is there without printing it: grep -c ELEVENLABS_API_KEY video-agent/.env.
Codex: codex --version, then they run codex login (browser, "Sign in with ChatGPT").
Treg
yt-dlp reads YouTube for free. TikTok and Instagram hide their numbers from scripts, a creator's own stats sit behind their login, and posting needs their accounts. Treg fills that gap: their own accounts connected once (stats and publishing, free), other creators' public numbers for about $0.001 a call. New verified accounts get $1.00 of credit once, enough for hundreds of calls.
Two ways to plug it in:
- CLI, macOS and Linux. It needs uv (recommended, it fetches the right Python), or pipx or pip with Python 3.12 or 3.13. There is no Windows installer.
curl -fsSL https://treg.to/install.sh | sh treg logintreg loginopens the browser (GitHub, Google or an email code). - MCP, any OS, nothing to install:
claude mcp add --transport http treg https://treg.to/mcp/, then/mcpto sign in. Eachtreg catalog search,catalog get,callandbalancebelow becomes the MCP toolcatalog_search,catalog_get,callorbalance.
Their own accounts (connecting needs the CLI). --capability post asks for the rights to read their stats and to post; posting still waits for their yes on each video:
treg connections connect --provider instagram --capability post
treg connections connect --provider tiktok --capability post
treg connections connect --provider youtube --capability post
treg connections ls
Each connect opens the platform's own login; they approve it there. Connect only the platforms they post on. Instagram needs a professional account (Creator or Business, a free switch in the app: Profile → menu → Account type and tools). Treg prints tips on stderr: add 2>/dev/null when you read its JSON.
Instagram connected: offer /insta-audit right after, it is the best first look at what works for them.
How every Treg call works, the rule for all the skills:
treg catalog search "<what you want to do>": describe the job, not a vendor ("list a TikTok account's videos with view counts").treg catalog get <id>: the parameters and the price. Say the price before calling. Their own connected accounts are marked free.treg call <id> --query key=value. A failed call is not charged.treg balanceshows what is left; a 402 error means the balance is empty.
Permissions: add only the free, read-only commands, so every paid treg call still asks first:
"Bash(treg catalog *)",
"Bash(treg balance)",
"Bash(treg connections ls)"
8. Wrap up
Show what is ready (✓ or skipped, one line each) and the path forward. They can also just type /editing <what they want>: it picks the right skill.
The shortest path to a first video: record one take (phone, camera or webcam) into video-agent/takes/<slug>.mp4, then /short-editing. Then, when they want more:
/studio-script: this week's scripts, hooks first, humanized (/studio-script viralfirst for what works in their niche)./insta-audit: what works on their own Instagram (fills audit.md)./outliers: the reels that blew up for their competitors, turned into 5 scripts to record./short-editing: a short (vertical) or a full YouTube video (horizontal), in their style./broll: their own B-roll clips as a library, placed on their edits./steal: a creator's reel they love into a second style./clips: a long video into finished shorts./short-translate: a take in another language, in their voice./codex-images: thumbnails, covers, end cards./vox: a photo into a paper-collage animation./publish: YouTube, Instagram and TikTok.
Later
/studio-setup <part> jumps to one part: tools, engine, voice (rebuild or update voice.md), style (their look, sound, CTA, tool logos, logo, end card), permissions, treg, keys.
FAQ
What does the studio-setup skill do?
Sets up the creator's video editing studio, for shorts and YouTube videos, on their computer and in their project - tools, the video-agent/ folder, the render engine, the creator's voice.md, their default editing style (an onboarding on their colors, paper, fonts, captions, sound, Instagram CTA, real tool logos, logo and end card, with a preview on their own footage), permissions, and the optional accounts (Treg for Instagram, TikTok and YouTube, an ElevenLabs key, Codex). Use when the user says setup, onboarding, install, "start here", configure, connect my account, Treg, first time using studio-script, short-editing, publish or any video skill, or wants to update their voice, niche, CTA, brand color, look, font, captions, sound effects, logo or tool logos (/studio-setup style). Checks Node, ffmpeg, yt-dlp and git with install commands for macOS, Windows and Linux, writes voice.md from their own videos or a short interview, pre-approves the tool commands in .claude/settings.json.
How do I install studio-setup?
Run npx skills add https://github.com/melvynx/video-agent-skills --skill studio-setup in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/studio-setup/ (personal) or .claude/skills/studio-setup/ (project).
Which AI agents can use studio-setup?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is studio-setup safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains studio-setup?
It is published by melvynx in melvynx/video-agent-skills. It has 293 recorded installs.
More from melvynx/video-agent-skills
short-editing
melvynx/video-agent-skills
Edits a talking-head take end to end into a paper-style motion design short (1080x1920, also 1:1 and 16:9) with its own render engine (Node + Chrome + ffmpeg, free, offline). Use when the user says edit, cut, captions, subtitles, motion design, montage, "make it a short", render, or gives a recording from video-agent/takes/. Transcribes locally with word timings (whisper.cpp, or ElevenLabs when a key is set), cuts every silence, lays the boards on a textured paper above the camera card (counters, terminals, logos, trees, real screens, HTML motion components), word-by-word captions, a calm music bed, a few designed hits, -14 LUFS, and writes the mp4, an .srt and the post copy.
codex-images
melvynx/video-agent-skills
Generates images with Codex (OpenAI's coding agent and its built-in image tool, included in a ChatGPT plan) - YouTube thumbnails, covers, B-roll stills, board images, profile pictures - one Codex job per image, several in parallel, with the creator's photos as reference when the face matters, then copies them into the project with a manifest. Use when the user says generate an image, a thumbnail, a cover, make me a visual, codex images, génère une image, miniature, or when publish or short-editing needs an image.
studio-script
melvynx/video-agent-skills
The scriptwriter of the creator's videos - short-form scripts (YouTube Shorts, TikTok, Instagram Reels, 30 to 60 s) in their own voice from video-agent/voice.md, each on a concept proven by the niche's outliers, with 3 scored hooks from 22 formulas, a re-hook, triggers, offer proximity, quality gates, timing at their pace and visual notes, then a humanize pass (invisible characters, AI words in English and French, AI sentence shapes, facts kept). Modes - the week (default), one topic, a funnel or divisive script, a making-of, hook printer, rewrite, humanize, and viral (what over-performs in their niche, scored against each account's median, YouTube free with yt-dlp, TikTok and Instagram through Treg, into video-agent/swipe.md). Use when the user asks for scripts, ideas, this week's videos, a funnel or divisive (clivant) script, a making-of, a hook, a better hook, to rewrite a script, what goes viral, viral hooks, what works in my niche, competitor research, swipe file, outliers, or to
steal
melvynx/video-agent-skills
Copies another creator's editing style into a named style that short-editing applies to your own takes. Use when the user says steal, "copy the style of", "edit like @x", "make a style from this reel", "vole le style de", or gives a reel or short as the model for a look. Downloads the reel (yt-dlp, or Treg for Instagram and TikTok), MEASURES the style with ffmpeg instead of eyeballing it (contact sheets, hard cuts per second, a spectrogram for the beat and the sound effects on the cuts, the music level under the voice, the face size and the zooms), writes video-agent/styles/ / (style.json for the engine + STYLE.md), then edits a test video with short-editing and compares it frame by frame with the original.
clips
melvynx/video-agent-skills
Turns one long video (YouTube link, podcast, webinar, livestream, or a local file) into finished vertical shorts. Use when the user says long to short, repurpose, long video to shorts, clips from my video, podcast clips, cut my YouTube video into shorts, or gives a long video link. Finds clips that stand alone (one idea, 20 to 60 seconds), scores them, cuts them and edits each one with short-editing (split-screen paper look, captions, cuts, hook, boards, 1080x1920), and writes new scripts in the studio-script format from the ideas too spread out to clip. Reads YouTube captions and chapters with yt-dlp, or transcribes a local file with the short-editing engine (whisper.cpp, free, offline).
editing
melvynx/video-agent-skills
Entry point for every video job - routes to studio-setup, insta-audit, studio-script, outliers, short-editing, broll, steal, clips, short-translate, codex-images, vox or publish, and continues the project already in progress. Use when the user says /editing, edit, montage, take, short, reel, video, script, audit, publish, or is not sure which video skill to use.
Popular media & creative skills
hyperframes
heygen-com/hyperframes
Read first to make, edit, animate or render any video with HyperFrames (HTML rendered to video), including launch films, explainers, music videos, charts, maps, vertical clips, title cards, captions and overlays. Holds the render contract, the work loop and what each kind of video needs.
media-use
heygen-com/hyperframes
Get or make any media for a HyperFrames video - music, sound effects, images, icons, logos, voiceover, avatar and generated video, transcripts, cutouts, colour grades and looks - with HeyGen or free local tools, and mix placed audio. Also for footage that looks dark, flat or dull, or should be stylized or hidden.
hyperframes-registry
heygen-com/hyperframes
About 450 ready-made HyperFrames blocks and components installed as editable source - transitions, overlays, titles, kinetic type, captions, charts, map overlays, 3D, camera moves. Use it before hand-building any named visual (CRT scanlines, glitch, film grain, a chart); also for hyperframes add and catalog.
hyperframes-creative
heygen-com/hyperframes
Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use hyperframes-animation.
ai-video-generation
101-skills/superpowers
Generate AI videos with Google Veo, Seedance 2.0, HappyHorse, Wan, Grok and 40+ models via inference.sh CLI. Models: Veo 3.1, Veo 3, Seedance 2.0, HappyHorse 1.0, Wan 2.5, Grok Imagine Video, OmniHuman, Fabric, HunyuanVideo. Capabilities: text-to-video, image-to-video, reference-to-video, video editing, lipsync, avatar animation, video upscaling, foley sound. Use for: social media videos, marketing content, explainer videos, product demos, AI avatars. Triggers: video generation, ai video, text to video, image to video, veo, animate image, video from image, ai animation, video generator, generate video, t2v, i2v, ai video maker, create video with ai, runway alternative, pika alternative, sora alternative, kling alternative, seedance, happyhorse
ai-image-generation
101-skills/superpowers
Generate AI images with GPT-Image-2, FLUX, Gemini, Grok, Seedream, Reve and 50+ models via inference.sh CLI. Models: GPT-Image-2, FLUX Dev LoRA, FLUX.2 Klein LoRA, Gemini 3 Pro Image, Grok Imagine, Seedream 4.5, Reve, ImagineArt. Capabilities: text-to-image, image-to-image, inpainting, LoRA, image editing, upscaling, text rendering. Use for: AI art, product mockups, concept art, social media graphics, marketing visuals, illustrations. Triggers: flux, image generation, ai image, text to image, stable diffusion, generate image, ai art, midjourney alternative, dall-e alternative, text2img, t2i, image generator, ai picture, create image with ai, generative ai, ai illustration, grok image, gemini image, gpt image, openai image, chatgpt image