Podcast
zarazhangrui/personalized-podcast
Generate a podcast episode from content you provide. An agent skill from zarazhangrui/personalized-podcast.
Frame screenshots and screen recordings with the frames CLI.
$ npx skills add viticci/frames-cli --skill frames-cli -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install viticci/frames-cli frames-cli --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/viticci/frames-cli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skill .claude/skills/frames-cli && 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 "frames-cli" agent skill from https://github.com/viticci/frames-cli/tree/main/skill into .claude/skills/frames-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frames-cli", 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/viticci/frames-cli/tree/main/skillType 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 viticci/frames-cli --skill frames-cli -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install viticci/frames-cli frames-cli --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/viticci/frames-cli.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skill .agents/skills/frames-cli && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "frames-cli" agent skill from https://github.com/viticci/frames-cli/tree/main/skill into .agents/skills/frames-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frames-cli", 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 viticci/frames-cli --skill frames-cli -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install viticci/frames-cli frames-cli --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/viticci/frames-cli.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skill .cursor/skills/frames-cli && 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 "frames-cli" agent skill from https://github.com/viticci/frames-cli/tree/main/skill into .cursor/skills/frames-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frames-cli", 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/viticci/frames-cli.git --path skill--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 viticci/frames-cli --skill frames-cli -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install viticci/frames-cli frames-cli --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/viticci/frames-cli.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skill .gemini/skills/frames-cli && 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 "frames-cli" agent skill from https://github.com/viticci/frames-cli/tree/main/skill into .gemini/skills/frames-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frames-cli", 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 viticci/frames-cli frames-cliInstalls 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 viticci/frames-cli --skill frames-cli -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/viticci/frames-cli.git skills-src && mkdir -p .github/skills && cp -r skills-src/skill .github/skills/frames-cli && 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 "frames-cli" agent skill from https://github.com/viticci/frames-cli/tree/main/skill into .github/skills/frames-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frames-cli", 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 viticci/frames-cli --skill frames-cli -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install viticci/frames-cli frames-cli --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/viticci/frames-cli.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skill .opencode/skills/frames-cli && 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 "frames-cli" agent skill from https://github.com/viticci/frames-cli/tree/main/skill into .opencode/skills/frames-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frames-cli", 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.
frames-cliFrame screenshots and screen recordings with the frames CLI.
Frames CLI is an agent skill from viticci/frames-cli. Frame screenshots and screen recordings with the frames CLI. Use this skill when the user asks to add Apple device bezels, frame screenshots or videos, create device mockups, inspect screenshot/device matches, or batch-process screenshot/video folders with the command line.
Its SKILL.md is about 6.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Media & Creative. It works with FFmpeg. The repository describes itself as: Frame screenshots and screen recordings taken on Apple devices with official product bezels. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2a62a0c. 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.
Shell commands in SKILL.md call:
xcrunFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
cdn.macstories.netFrom 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.
Frames CLI loads about 6.1k tokens when it runs. Until then it costs about 72 tokens; SKILL.md has 2,953 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); files beside SKILL.md are not scanned.
The full file from viticci/frames-cli at commit 2a62a0c, republished under its MIT licence (© viticci). 2,953 words, ~6,079 tokens.
.claude/skills/frames-cli/SKILL.md (or your agent's skills folder).frames 1.5.0 is a single-file Python CLI that applies Apple device bezels to screenshots and videos, auto-detects devices from input dimensions, applies masks when needed, and can merge multiple framed results. Video support uses external ffmpeg 5.1+ and ffprobe 5.1+ with no extra Python media stack.
frames is the default command. frames screenshot.png and frames frame screenshot.png are equivalent.--json for automation with frame, info, video, video-info, and doctor. Global flags --json, --assets, --verbose, and --no-color work before or after subcommands. list, list-colors, colors, and setup retain human-readable output.frames list and frames list-colors as the source of truth when exact names matter.frames setup downloads it; if frames doctor says the pack predates these devices, run setup again. Duo capture sizes are verified in the Xcode 27.1 simulator, not on hardware; do not claim real-device verification.frames video ... for .mp4, .mov, and .m4v; the default frames ... path is for images.frames video-info ... to probe videos and resolve the matching frame metadata without rendering.ffmpeg 5.1+ and ffprobe 5.1+. frames setup checks this and can offer a Homebrew install on macOS; frames doctor reports video tool readiness.frames video preserves single-video audio by default. Pass --strip-audio when the user asks for silent output, privacy-safe delivery, or validation clips where audio does not matter.frames video --preset compact|balanced|best controls H.264/HEVC export size/quality, including HEVC-alpha; best is the default. The default video canvas is opaque white except with --alpha or --codec hevc-alpha. For small opaque exports, use --preset compact with --background black or --background "#RRGGBB". Video exports report output file size and source-vs-output savings in human and JSON output.frames video --codec hevc-alpha ... for transparent HEVC-with-alpha .mov delivery on macOS with a compatible ffmpeg build. Use --alpha or --background transparent for ProRes 4444 .mov editing/compositing output unless --codec hevc-alpha is explicitly selected. Normal H.264/HEVC MP4 output is opaque; legacy --alpha --codec hevc still selects ProRes..mov extension. Use an output directory when you want the CLI to pick the .mov filename.frames video --rotate clockwise|counterclockwise|180 ... when a screen recording's visual orientation differs from its encoded dimensions. This is common with some landscape iPad recordings that probe as portrait.output_dimensions and padded for individual outputs, or top-level dimensions for merges, in JSON output.# Frame one screenshot
frames screenshot.png
# Frame every top-level image in a folder
frames ~/Screenshots/
# Pick a specific color or randomize colors
frames -c "Cosmic Orange" screenshot.png
frames -c random *.png
frames --colors "Silver,Space Black,random" one.png two.png three.png
# Frame videos
frames video-info recording.mp4
frames --json video-info recording.mp4
frames video recording.mp4
frames video --preset compact recording.mp4
frames video --background black --preset compact recording.mp4
frames video --background "#f5f5f5" --preset compact recording.mp4
frames video --preset balanced recording.mp4
frames video --preset best recording.mp4
frames video --rotate counterclockwise ipad-landscape-recording.mp4
frames video --alpha recording.mp4
frames video --codec hevc-alpha recording.mp4
frames video --codec hevc-alpha --preset compact -o delivery.mov recording.mp4
frames video -m --playback-offset --codec hevc-alpha 1.mp4 2.mp4
frames video -m --alpha 1.mp4 2.mp4
frames video -m --background transparent 1.mp4 2.mp4
frames --json video --strip-audio recording.mp4
frames video --strip-audio recording.mp4
frames video --background "#f5f5f5" --codec hevc recording.mp4
frames video -m --playback-offset 1.mp4 2.mp4
frames video -m --colors "Silver,random" 1.mp4 2.mp4
# Force an exact frame instead of auto-resolving the newest variant
frames -d "iPhone 15 Pro Portrait" screenshot.png
# Merge framed outputs side by side
frames -m shot1.png shot2.png
# Merge without proportional physical scaling
frames -m --no-scale shot1.png shot2.png
# Batch merge sequential groups
frames -b 3 *.png
# Save to a separate output directory
frames -o ~/Framed *.png
# Save to a subfolder next to originals
frames -f *.png
frames --subfolder mockups *.png
# Inspect matches without framing
frames info screenshot.png
frames --json info ~/Screenshots/
# Discover supported devices and colors
frames list
frames list-colors "17 Pro"
# Manage default colors
frames colors
# Diagnose asset/config problems
frames doctor
# Download or re-point assets
frames setup
frames setup /path/to/Frames--device to skip variant resolution.default, or random.--colors for per-input colors on images and videos; it maps comma-separated values to expanded inputs by order..mp4, .mov, and .m4v files through frames video; single-video audio is preserved unless --strip-audio is passed.--preset compact, --preset balanced, or --preset best to tune H.264/HEVC export size/quality, including HEVC-alpha. best is the default.--rotate clockwise|counterclockwise|180 to rotate videos before auto-detection and framing.output_dimensions and padded; merged JSON reports the final size in top-level dimensions.--json agent output.--codec hevc-alpha for macOS HEVC-alpha MOV delivery, or --alpha / --background transparent for ProRes 4444 MOV. HEVC-alpha supports single, simultaneous merge, and sequential merge output with the same rotation, color, mask, scaling, and audio rules.frames video-info.frames video -m, or sequentially left-to-right with frames video -m --playback-offset.--no-scale to disable proportional scaling and keep native framed sizes when merging.--batch N to merge sequential groups. --batch implies merge and N must be at least 2.--output, or into a validated single-name subfolder via -f or --subfolder.--copy.info.doctor.colors.--json for machine-readable output from frame, info, video, video-info, and doctor--no-color to disable ANSI color--assets PATH to override asset discovery-v / --verbose for variant, resize, and mask detailsframes video --help and frames video-info --help for the human-facing video examples and option summaries.frames colors is interactive in a real terminal. If stdin is not a TTY, or curses is unavailable, it falls back to a plain printed color list.frames list-colors does partial device-name matching. frames list-colors "17 Pro" is valid..png, .jpg, .jpeg, .heic, .tiff, and .webp..mp4, .mov, and .m4v.20,000px on either side trigger a warning. Images larger than 50,000px are rejected.--subfolder only accepts a single directory name, not a path like ../out or foo/bar.frames video-info FILE reports dimensions, duration, fps, codec, audio state, matched device, selected color, frame size, mask state, and resize metadata without creating an output video.frames video-info --rotate counterclockwise FILE reports the post-rotation dimensions and matched device before spending time rendering.frames video FILE writes FILE_framed.mp4 by default, or .mov when --alpha, --codec prores, --codec hevc-alpha, or --background transparent is used.--alpha and --codec hevc-alpha default the background to transparent unless the user explicitly passes another --background. An explicit opaque background also applies to any even-dimension padding..mov; otherwise frames video fails before rendering.--output may be an explicit output file path or a directory. For multiple individual videos, use an output directory. Conflicts that would overwrite another input or send distinct inputs to the same output are rejected before rendering; choose a separate output directory or distinct source filenames.--merge creates one horizontal video. Without --playback-offset, videos play simultaneously and duration is the longest input.--playback-offset requires --merge; videos play left to right, inactive future videos hold their first frame, and completed videos hold their final frame.physicalHeight, measured against each device's visible body rather than its padded frame canvas, and bottom-aligned by default. Use --no-scale only when native framed pixel sizes matter more than physical proportion.--strip-audio is passed. Sequential --playback-offset merges concatenate audio and generate silence for inputs without audio. Simultaneous merges omit mixed audio in this version.--background accepts only white, black, transparent, or #RRGGBB. The default canvas is opaque white, including with --codec prores; --alpha or --codec hevc-alpha changes the default to transparent. --background transparent selects ProRes MOV unless --codec hevc-alpha is explicit.--codec h264 is the default. Plain --codec hevc selects opaque HEVC MP4. --codec prores selects alpha-capable ProRes 4444 MOV; use --alpha or --background transparent for a transparent canvas. Explicit --codec hevc-alpha selects macOS VideoToolbox HEVC-with-alpha MOV, even when combined with --alpha. Without explicit hevc-alpha, --alpha takes precedence over --codec hevc and selects ProRes.yuva444p10le) for editing and compositing. Verify the intended receiving app; HEVC-alpha support is not universal.--preset compact|balanced|best controls H.264/HEVC hardware bitrate and software CRF. For HEVC-alpha, these presets set target bitrates of 4M, 7M, and 10M respectively; best is the default. Targets are not guaranteed file sizes. ProRes MOV files can be much larger; all presets keep the same ProRes settings.--quality N is an expert software H.264/HEVC CRF override; lower is higher quality. HEVC-alpha rejects --quality; use --preset instead.hevc_videotoolbox, its alpha_quality option, and BGRA input support. The CLI checks these before rendering and reports unsupported configurations without silently falling back to an opaque codec. If unavailable, update ffmpeg or explicitly choose ProRes with --alpha and remove --codec hevc-alpha. doctor checks general video tool readiness; it does not certify HEVC-alpha support.--rotate clockwise|counterclockwise|180 is applied before device matching, resizing, masks, and framing.--color random randomizes independently per input. --colors "A,B,random" maps values to expanded inputs by order and the count must match after directory expansion.video-info accepts --device, --color, --colors, and --rotate; it uses the same resolution rules as frames video.frames; render first, verify the output, then use the delivery workflow the user requested.frame, info, video, video-info, and doctor commands emit JSON on stdout when --json is set. Verbose details and warnings go to stderr, so --json --verbose remains parseable. list, list-colors, colors, and setup retain human-readable output.frames --json screenshot.png returns one framed-image object with fields such as source, device, color, dimensions, frame_size, resized, masked, physicalHeight, and output.frames --json *.png returns { "frames": [...] } for multiple individual outputs.frames --json -m ... returns a merged result with merged, count, and frames.frames --json -b N ... returns batches, batch_size, total, and frames when there are multiple groups. A single group returns merged, count, and frames.scale_factor values are included in the JSON output. Image batch factors describe each frame within its own batch.frames --json info ... returns either one object or a list of objects, including device, primary_match, colors, color_count, has_mask, resize_width, variants, and is_variant.frames --json video-info ... returns one video metadata object, or a list for multiple videos, including dimensions, source_dimensions, rotation, duration, fps, codec, audio, device, primary_match, color, frame_size, output_dimensions, padded, resize_width, and mask_missing.frames --json doctor returns asset path/source/version, PNG count, config presence, issues, notes, and suggested next steps.frames --json video ... returns one video object, or { "videos": [...] } for multiple individual outputs, including output_codec, rotation, source_dimensions, output_dimensions, padded, preset, output_size_bytes, output_size, source_size_bytes, source_size, savings_bytes, savings, and savings_percent.frames --json video -m ... returns merged, duration, dimensions, output_codec, playback_offset, audio state, top-level output size/savings fields, and per-input frames. Top-level dimensions is the actual encoded output size, including any final even-dimension padding.output_codec identifies the effective render choice (h264, hevc, prores, or hevc-alpha) on individual outputs and merged top-level/per-input objects. Existing per-input codec remains the source codec. video-info inspects source metadata and does not emit output_codec.output_dimensions describes raw framed tiles before physical scaling, and per-input padded is false; only the final merge is padded. For single HEVC-alpha outputs, output_dimensions and padded describe the encoded output normally.alpha: true marks an alpha-capable ProRes or HEVC-alpha output, including when an explicit opaque background is selected. Read background to determine the requested canvas; verify decoded pixels when actual transparency matters.Config file:
~/.config/frames/config.jsonConfig keys:
assets_path: explicit asset folder pathdefault_colors: saved default frame colors by base device nameuse_subfolder: true for framed, or a custom folder name stringAsset resolution order:
--assetsFRAMES_ASSETSassets_path from config~/Library/Mobile Documents/iCloud~is~workflow~my~workflows/Documents/Frames~/Library/Application Support/frames/assetsSetup behavior:
frames setup downloads the current asset archive from https://cdn.macstories.net/images/uploads/2026/09/30/appleframes402-1790756136687-572a1ccddd.zip (AppleFrames402.zip, 60,821,581 bytes, SHA-256 5fecdd29acf4c3c6215a05629a07e2c5b30439597933859a7a71e153adad8fd3), which adds iPhone 18 Pro, 18 Pro Max, and iPhone Duo. It has 287 PNGs and asset format version 4. If frames doctor notes that the pack predates iPhone 18 Pro or iPhone Duo, re-run frames setup to update it.frames setup /path/to/Frames points the CLI at an existing asset folder instead of downloading.--assets and setup PATH take a local folder, not a URL or ZIP file. The separate Frames-Duo-Experimental pack from 1.4.1 is superseded; switch users to the standard pack with frames setup.NewFrames.json, version.txt, and the frame/mask PNGs.ffmpeg/ffprobe for video framing and can install ffmpeg through Homebrew on macOS when run interactively.frames setup --subfolder and frames setup --no-subfolder update the default save behavior in config.frames doctor remains usable and reports config problems; fix the reported config issue before retrying.frames doctor is the first command to run when assets were moved, edited, corrupted, or when video dependencies need verification.iPhone Duo screenshots are detected by exact width and height:
| Input width × height | Frame |
|---|---|
| 1398 × 2034 | iPhone Duo Outer Portrait |
| 2034 × 1398 | iPhone Duo Outer Landscape |
| 2007 × 2853 | iPhone Duo Inner Portrait |
| 2853 × 2007 | iPhone Duo Inner Landscape |
All four have Night Sky (default) and Star White finishes. The inner sizes are the Xcode 27.1 simulator's captures and frame at 1:1; mockups at Apple's announced 1878 × 2670 or 2670 × 1878 are scaled to the same frames. Do not resize the input yourself or add a camera cutout; the outer camera is part of Apple's frame. --device "iPhone Duo Outer Open" frames a 1398 × 2034 input in Apple's rear view, with the display on the right; it is never selected automatically, and frames list shows it under manual frames. Simulator inner-display recordings (2006 × 2852, rotation-tagged) are not detected automatically; pass --device with the matching inner orientation. Outer landscape artwork has the camera at the top left, so screenshots taken in the opposite landscape orientation show the frame's camera over content.
frames --json info duo.png
frames -c "Star White" duo.png
frames -d "iPhone Duo Outer Open" outer-portrait.png
frames --merge iphone-18-pro.png duo-outer.pngTo capture from the simulator: xcrun simctl io booted screenshot --display=1 for the outer display and --display=3 for the inner display. Fold state comes from Device Hub's Closed, Book, and Open buttons. See the repository's docs/iphone-duo.md for capture, video, merge, and rebuild details.
The standard v4 asset bundle used by frames 1.5.0 includes these primary families:
Current default variant resolution favors the newest matching frame for shared screenshot sizes:
iPhone 17 Portrait (1206 × 2622) and iPhone 17 Landscape resolve to iPhone 18 Pro Portrait and iPhone 18 Pro LandscapeiPhone 17 Pro Max Portrait (1320 × 2868) and iPhone 17 Pro Max Landscape resolve to iPhone 18 Pro Max Portrait and iPhone 18 Pro Max LandscapeiPhone 17 Pro and iPhone 17 Pro Max; 16 Pro frames remain selectable with --deviceiPhone 16 shares sizes with iPhone 15 ProiPhone 16 Plus shares sizes with iPhone 15 Pro MaxMacBook Pro M5 shares sizes with MacBook Pro 2021MacBook Air M5 13 shares sizes with MacBook Air 2022Studio Display shares sizes with Studio Display XDRWatch Series 11 shares sizes with Watch Series 10If an exact older variant is required, pass --device with the exact frame name instead of relying on auto-detection.
frames --json info ... first when you do not control the screenshot source. For videos, run frames --json video-info ... when you need dimensions, duration, audio state, or the matched frame before rendering.frames list or frames list-colors.frames doctor before changing config or re-downloading assets.--device only when the user wants an exact frame, older variant, or a non-default shared-size match.--no-scale only when the user explicitly wants native framed sizes instead of physically proportionate merges.--preset compact for smaller video exports. For transparency, use --codec hevc-alpha for Apple-compatible delivery on macOS, or --alpha for ProRes editing/compositing output. Use an explicit opaque --background black or --background "#RRGGBB" when requested.frames video -m for simultaneous playback and frames video -m --playback-offset for left-to-right sequential playback.--strip-audio for generated test artifacts unless the user specifically wants audio preserved.ffprobe when final output audio state, duration, codec, or stream count matters. For HEVC-alpha transparency, verify with a native Apple decoder or the intended Apple app: ffprobe and software HEVC decoding may expose only the opaque yuv420p base layer. That alone does not prove alpha is missing.video-info with --rotate counterclockwise or --rotate clockwise and verify it resolves to the landscape frame before rendering.© viticci, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skill of viticci/frames-cli.
Open the folder on GitHubat commit 2a62a0c
Frames CLI 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 |
|---|---|---|---|---|---|---|
| Frames CLI this skillviticci/frames-cli | 404 | — | ~6.1k | Automated safety check: Pass | MIT | |
| Podcastzarazhangrui/personalized-podcast | 436 | — | ~2.3k | Automated safety check: Notes | None | |
| Book Sales VideoKianzzz/book-sales-video | 214 | — | ~3.2k | Automated safety check: Pass | MIT | |
| Video Assemblezenstory-ai/video-recap-skills | 553 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Extract Video Framesqdhenry/Claude-Command-Suite | 1.3k | — | ~1.6k | Automated safety check: Pass | None | |
| Video Cutzenstory-ai/video-recap-skills | 553 | — | ~1.6k | Automated safety check: Pass | MIT |
zarazhangrui/personalized-podcast
Generate a podcast episode from content you provide. An agent skill from zarazhangrui/personalized-podcast.
Kianzzz/book-sales-video
从书名或飞书多维表格中的成稿文案出发,结合微信读书资料与公开点评创作图书带货/书评短视频,并用豆包 TTS、Pexels、Codex 生图和本机 OpenChatCut 完成配音、配图、双语字幕、音效、动效、BGM、可编辑初稿与按需导出。用户提出“根据一本书做带货视频”“读取飞书文案制作图书视频”“写书评口播并自动剪成抖音视频”“仿参考样式做图书推荐短视频”时使用;仅查书、仅写普通书评或无关剪辑…
zenstory-ai/video-recap-skills
合成视频解说最终成片:把旁白音频铺到源视频上,按旁白窗口压低原声,生成 SRT / ASS 字幕并可烧录, 最后做响度标准化。作为最终合成阶段使用。输入源视频、ttsmeta.json 与旁白位置; 输出 recap 成片和字幕。触发词:视频合成、混音、字幕、压字幕、assemble video、mux、ducking、subtitles、成片。
qdhenry/Claude-Command-Suite
Extracts frames and timestamped audio segments from video files (GIF, MP4, MOV) at configurable intervals and stores them in a directory with a manifest file.
zenstory-ai/video-recap-skills
把长视频按 Agent 选择的原片区间剪成短片。作为两阶段创作流程中的剪辑环节,读取 clipplan.json 与源视频, 输出 editedsource.mp4;随后 Agent 按输出时间线写 narration.json。支持单视频与多视频(sources manifest)拼剪, 本工具不读取、不映射旁白。
micky-li-hd/VideoCoCo
Convert physical-state-planner outputs into standalone Blender Python preview videos.
Works with
Categories
Frame screenshots and screen recordings with the frames CLI. Frames CLI is an agent skill from viticci/frames-cli. Frame screenshots and screen recordings with the frames CLI.
Frames CLI fits situations like: the user asks to add Apple device bezels; frame screenshots; create device mockups; inspect screenshot/device matches.
Run `npx skills add viticci/frames-cli --skill frames-cli -a claude-code`. Or copy the skill folder (skill in viticci/frames-cli) into .claude/skills/frames-cli in your project. Claude Code loads it when a task matches its description.
Run `npx skills add viticci/frames-cli --skill frames-cli -a codex`. Or copy the skill folder (skill in viticci/frames-cli) into .agents/skills/frames-cli 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 viticci/frames-cli --skill frames-cli -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/frames-cli, .gemini/skills/frames-cli, .github/skills/frames-cli and .opencode/skills/frames-cli in your project.
Going by SKILL.md and its folder, Frames CLI needs the command-line tools its instructions call (xcrun). Our summary lists: Python 3.
SKILL.md names 1 domain. In commands or code: cdn.macstories.net; the agent is likely to contact it when it follows the instructions. 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. Review the folder before installing.
Frames CLI is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.1k tokens (SKILL.md is roughly 24k 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 Frames CLI: Podcast (zarazhangrui/personalized-podcast, 436 stars), Book Sales Video (Kianzzz/book-sales-video, 214 stars), Video Assemble (zenstory-ai/video-recap-skills, 553 stars) and Extract Video Frames (qdhenry/Claude-Command-Suite, 1.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
viticci (a GitHub user) maintains it in viticci/frames-cli, which has 404 GitHub stars. The repository was last updated on September 30, 2026.
Source: viticci/frames-cli on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.