Agent skill

Media Composition

by athola in athola/claude-night-market

Combines GIFs and videos into composite tutorials with vertical or grid layouts via ffmpeg.

MITAuto-check passedMedia & Creative

Install Media Composition

skills CLI
$ npx skills add athola/claude-night-market --skill media-composition -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install athola/claude-night-market media-composition --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/scry/skills/media-composition .claude/skills/media-composition && rm -rf skills-src

Use ~/.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/

Facts

Skill name
media-composition
GitHub stars
341
Token cost
~1.8k tokens
SKILL.md length
425 words
Files
1
Skills in repo
154
Repo updated
First seen
Licence
MIT

At a glance

Combines GIFs and videos into composite tutorials with vertical or grid layouts via ffmpeg.

  • Works in 4 steps: Parse Manifest File → Validate Component Outputs → Execute FFmpeg Composition → …
  • Assembling multi-part media into a single output
  • SKILL.md covers When To Use, When NOT To Use, Overview and Prerequisites, plus 7 more sections
  • Calls ffmpeg and yq

What it does

Media Composition is an agent skill from athola/claude-night-market. Combines GIFs and videos into composite tutorials with vertical or grid layouts via ffmpeg. Use when assembling multi-part media into a single output.

Its SKILL.md is about 1.8k 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, covering Video production. It works with FFmpeg. The repository describes itself as: 23 Claude Code plugins: TDD enforcement hooks, git/PR workflows, spec-driven development, code review, project lifecycle, fix-from-error, maintenance automation, context… The licence is MIT.

When your agent uses it

  • Assembling multi-part media into a single output
  • Tasks that involve Video production

Example prompts

  • “Use the media-composition skill to combine GIFs and videos into composite tutorials with vertical or grid layouts via ffmpeg”
  • “/media-composition”

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Parse Manifest File
  2. Validate Component Outputs
  3. Execute FFmpeg Composition
  4. Verify Combined Output

What it can do on your machine

Read from SKILL.md and the folder at commit 9f3eb00. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • ffmpeg
    • yq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Media Composition loads about 1.8k tokens when it runs. Until then it costs about 42 tokens; SKILL.md has 425 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~42
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from athola/claude-night-market at commit 9f3eb00, republished under its MIT licence (© athola). 425 words, ~1,797 tokens.

Download SKILL.mdSave it as .claude/skills/media-composition/SKILL.md (or your agent's skills folder).
name
media-composition
description
Combines GIFs and videos into composite tutorials with vertical or grid layouts via ffmpeg. Use when assembling multi-part media into a single output.
alwaysApply
false
category
media-generation
tags
composition, ffmpeg, media, combine, stitch, tutorial
complexity
medium
model_hint
standard
estimated_tokens
450
progressive_loading
false
dependencies
scry:gif-generation

Media Composition Skill

Combine multiple media assets (GIFs, videos, images) into composite outputs for detailed tutorials and documentation.

When To Use

  • Combining multiple media outputs into compositions
  • Creating composite demos from terminal and browser recordings

When NOT To Use

  • Single-format output that does not need composition
  • Simple terminal recordings - use scry:vhs-recording directly

Overview

This skill orchestrates the combination of separately generated media assets into unified outputs. It reads manifest files that define components and their composition rules, validates all inputs exist, and executes FFmpeg commands to produce the final composite media.

Prerequisites

The following tools must be available on PATH before using this skill:

  • ffmpeg: media composition and encoding
  • yq: YAML manifest parsing

Run ffmpeg -version and yq --version to verify availability.

Required TodoWrite Items

- Parse composition manifest file
- Validate all component outputs exist
- Determine composition layout and parameters
- Execute FFmpeg composition command
- Verify combined output file created
- Report composition metrics (file size, dimensions)

Manifest Format

Manifests define the components to combine and how to arrange them:

yaml
# Example manifest: tutorials/mcp.manifest.yaml
name: mcp
title: "MCP Server Integration"
components:
  - type: tape
    source: mcp.tape
    output: assets/gifs/mcp-terminal.gif
  - type: playwright
    source: browser/mcp-browser.spec.ts
    output: assets/gifs/mcp-browser.gif
    requires:
      - "skrills serve"
combine:
  output: assets/gifs/mcp-combined.gif
  layout: vertical
  options:
    padding: 10
    background: "#1a1a2e"
Manifest Schema
FieldTypeRequiredDescription
namestringYesIdentifier for the composition
titlestringNoHuman-readable title
componentsarrayYesList of media components to combine
components[].typestringYesSource type: tape, playwright, static
components[].sourcestringYesPath to source file
components[].outputstringYesPath to generated output
components[].requiresarrayNoCommands to run before generation
combine.outputstringYesPath for combined output
combine.layoutstringYesLayout mode (see table below)
combine.optionsobjectNoLayout-specific options

Step-by-Step Process

1. Parse Manifest File
bash
# Read and validate manifest structure
yq eval '.' manifest.yaml

# Extract component outputs
yq eval '.components[].output' manifest.yaml
2. Validate Component Outputs
bash
# Check all required files exist
for output in $(yq eval '.components[].output' manifest.yaml); do
  if [[ ! -f "$output" ]]; then
    echo "ERROR: Missing component: $output"
    exit 1
  fi
done
3. Execute FFmpeg Composition

Based on the layout specified in the manifest, execute the appropriate FFmpeg command.

4. Verify Combined Output
bash
# Verify output exists and has content
if [[ -f "$output" && -s "$output" ]]; then
  echo "Composition successful: $output"
  ls -lh "$output"
else
  echo "ERROR: Composition failed"
  exit 1
fi

FFmpeg Composition Commands

Vertical Stacking

Stack GIFs/videos top to bottom:

bash
ffmpeg -i top.gif -i bottom.gif \
  -filter_complex "[0:v][1:v]vstack=inputs=2" \
  -y output.gif

With padding between:

bash
ffmpeg -i top.gif -i bottom.gif \
  -filter_complex "[0:v]pad=iw:ih+10:0:0:color=black[top];[top][1:v]vstack=inputs=2" \
  -y output.gif
Show full SKILL.md (166 more words)Show less
Horizontal Stacking

Stack GIFs/videos side by side:

bash
ffmpeg -i left.gif -i right.gif \
  -filter_complex "[0:v][1:v]hstack=inputs=2" \
  -y output.gif
Sequential Concatenation

Play GIFs/videos one after another:

bash
# Create concat list file
cat > concat_list.txt << EOF
file 'first.gif'
file 'second.gif'
file 'third.gif'
EOF

# Concatenate
ffmpeg -f concat -safe 0 -i concat_list.txt \
  -y output.gif
Grid Layout (2x2)
bash
ffmpeg -i tl.gif -i tr.gif -i bl.gif -i br.gif \
  -filter_complex "[0:v][1:v]hstack=inputs=2[top];[2:v][3:v]hstack=inputs=2[bottom];[top][bottom]vstack=inputs=2" \
  -y output.gif
With Background Color
bash
ffmpeg -i top.gif -i bottom.gif \
  -filter_complex "color=c=#1a1a2e:s=800x600[bg];[bg][0:v]overlay=0:0[tmp];[tmp][1:v]overlay=0:300" \
  -y output.gif

Layout Options

LayoutDescriptionOptions
verticalStack top to bottompadding, background, align
horizontalStack left to rightpadding, background, align
sequentialPlay in ordertransition, duration
gridN x M grid arrangementrows, cols, padding
overlayLayer on top of each otherposition, opacity
pipPicture-in-picturecorner, scale, margin
Layout Option Details
OptionTypeDefaultDescription
paddingint0Pixels between components
backgroundstring"black"Background color (hex or name)
alignstring"center"Alignment: left, center, right
transitionstring"none"Transition type: fade, wipe, none
scalefloat0.25Scale factor for PiP
cornerstring"br"PiP corner: tl, tr, bl, br

Example Compositions

Terminal and Browser Tutorial
yaml
name: plugin-demo
components:
  - type: tape
    source: demo.tape
    output: terminal.gif
  - type: playwright
    source: browser.spec.ts
    output: browser.gif
combine:
  output: demo-combined.gif
  layout: vertical
  options:
    padding: 5
    background: "#0d1117"
Side-by-Side Comparison
yaml
name: before-after
components:
  - type: static
    source: before.gif
    output: before.gif
  - type: static
    source: after.gif
    output: after.gif
combine:
  output: comparison.gif
  layout: horizontal
  options:
    padding: 10
Picture-in-Picture
yaml
name: pip-demo
components:
  - type: tape
    source: main.tape
    output: main.gif
  - type: playwright
    source: overlay.spec.ts
    output: overlay.gif
combine:
  output: pip-demo.gif
  layout: pip
  options:
    corner: br
    scale: 0.3
    margin: 20

Exit Criteria

  • Manifest file parsed successfully
  • All component outputs validated as existing
  • FFmpeg composition command executed without errors
  • Combined output file exists and has non-zero size
  • Output dimensions and duration logged
  • Temporary files cleaned up

© athola, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugins/scry/skills/media-composition of athola/claude-night-market.

Open the folder on GitHubat commit 9f3eb00

Compare with similar skills

Media Composition 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.

Media Composition compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Media Composition this skillathola/claude-night-market341—~1.8kAutomated safety check: PassMIT
Video Understandcalesthio/OpenMontage66k—~841Automated safety check: PassAGPL-3.0
HyperFrames Video Entry Pointheygen-com/hyperframes59k3 repos~5.2kAutomated safety check: PassApache-2.0
Video Shotseternityspring/reelbench-skills8721 repos~1.8kAutomated safety check: NotesApache-2.0
Mobile Demo Film Editorsuperset-sh/superset15k—~1.8kAutomated safety check: PassCustom licence
Video Editcalesthio/OpenMontage66k—~855Automated safety check: NotesAGPL-3.0

Similar skills

  • Video Understand

    calesthio/OpenMontage

    Understand video content locally using ffmpeg frame extraction and Whisper transcription.

    66k GitHub stars~841 tokensUpdated 5 days ago
    Media & CreativeAuto-check passed
  • HyperFrames Video Entry Point

    heygen-com/hyperframes

    Entry point for making, editing and rendering videos from HTML compositions with HyperFrames, routing each request to the right workflow.

    59k GitHub starsUsed in 3 repos~5.2k tokens
    Media & CreativeAuto-check passed
  • Video Shots

    eternityspring/reelbench-skills

    拉片:把一条成片拆成逐镜头的分析表——每个镜头的时长、景别、类别、运镜、画面. An agent skill from eternityspring/reelbench-skills.

    872 GitHub starsUsed in 1 repo~1.8k tokens
    Media & CreativeAuto-check: notes
  • Mobile Demo Film Editor

    superset-sh/superset

    Edits real mobile screen recordings into a configurable demo video with phone framing, title cards, cutaways and an end card, using a bundled renderer.

    15k GitHub stars~1.8k tokensUpdated today
    Media & CreativeAuto-check passed
  • Video Edit

    calesthio/OpenMontage

    Edit videos locally using ffmpeg. An agent skill from calesthio/OpenMontage.

    66k GitHub stars~855 tokensUpdated 5 days ago
    Media & CreativeAuto-check: notes
  • Lemo-Opuscar Short Film Director

    lemomo-ai/lemo-opuscar

    Directs a short film made entirely in code in one of the Lemo-Opuscar library's named visual styles, from fetching the library through production and delivery.

    1.4k GitHub stars~596 tokensUpdated today
    Media & CreativeAuto-check passed

More from athola/claude-night-market

All 154 skills in this repo
  • Night Market Diagnostics Toolkit

    athola/claude-night-market

    Run and interpret repo diagnostic scripts (ratchets, validators, token stats).

    341 GitHub stars~3.4k tokensUpdated 3 days ago
    Auto-check passed
  • Skills Eval

    athola/claude-night-market

    Evaluate Claude skill quality through auditing. An agent skill from athola/claude-night-market.

    341 GitHub stars~1.6k tokensUpdated 3 days ago
    Auto-check passed
  • Agent Teams

    athola/claude-night-market

    Coordinates Claude agent teams via filesystem protocol. An agent skill from athola/claude-night-market.

    341 GitHub stars~2.5k tokensUpdated 3 days ago
    Auto-check passed
  • Delegation Core

    athola/claude-night-market

    Delegates execution to eight CLIs (Gemini, Qwen, MiniMax, GLM, Muse, Codex, OpenCode, Glimmer).

    341 GitHub stars~2.5k tokensUpdated 3 days ago
    Auto-check passed
  • Elegant Code

    athola/claude-night-market

    Guide minimal code via a decision ladder with full safety, edge, and negative-case coverage.

    341 GitHub stars~2.1k tokensUpdated 3 days ago
    Auto-check passed
  • Skill Library Mission

    athola/claude-night-market

    Build a project skill library in .claude/skills/ via discovery, parallel authoring, and review.

    341 GitHub stars~1.6k tokensUpdated 3 days ago
    Auto-check passed

Works with

Questions about Media Composition

What does Media Composition do?

Combines GIFs and videos into composite tutorials with vertical or grid layouts via ffmpeg. Media Composition is an agent skill from athola/claude-night-market. Combines GIFs and videos into composite tutorials with vertical or grid layouts via ffmpeg.

When should I use Media Composition?

Media Composition fits situations like: assembling multi-part media into a single output; tasks that involve Video production.

How do I install Media Composition in Claude Code?

Run `npx skills add athola/claude-night-market --skill media-composition -a claude-code`. Or copy the skill folder (plugins/scry/skills/media-composition in athola/claude-night-market) into .claude/skills/media-composition in your project. Claude Code loads it when a task matches its description.

How do I install Media Composition in Codex?

Run `npx skills add athola/claude-night-market --skill media-composition -a codex`. Or copy the skill folder (plugins/scry/skills/media-composition in athola/claude-night-market) into .agents/skills/media-composition in your project. Codex loads it when a task matches its description.

Can I use Media Composition in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add athola/claude-night-market --skill media-composition -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/media-composition, .gemini/skills/media-composition, .github/skills/media-composition and .opencode/skills/media-composition in your project.

What does Media Composition need to run?

Going by SKILL.md and its folder, Media Composition needs the command-line tools its instructions call (ffmpeg and yq).

Does Media Composition access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Media Composition safe to install?

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.

What licence does Media Composition use?

Media Composition is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Media Composition use?

About 1.8k tokens (SKILL.md is roughly 7.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Media Composition?

Skills that share tags, products or a category with Media Composition: Video Understand (calesthio/OpenMontage, 66k stars), HyperFrames Video Entry Point (heygen-com/hyperframes, 59k stars), Video Shots (eternityspring/reelbench-skills, 872 stars) and Mobile Demo Film Editor (superset-sh/superset, 15k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Media Composition?

athola (a GitHub user) maintains it in athola/claude-night-market, which has 341 GitHub stars. The repository holds 154 skills in this directory. The repository was last updated on October 6, 2026.

Source: athola/claude-night-market on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.