
Media Composition
Stitch multiple GIF or video clips into one tutorial-style composite using a manifest and FFmpeg layouts.
Install
npx skills add https://github.com/athola/claude-night-market --skill media-compositionWhat is this skill?
- Four-step workflow: parse manifest, validate component outputs, run FFmpeg composition, verify combined file
- Layout modes: vertical stack, horizontal stack, sequential concat, 2×2 grid, picture-in-picture, optional background col
- Manifest-driven composition with schema validation before encoding
- Documents concrete FFmpeg command patterns for each layout option
- Depends on scry:gif-generation for upstream clip assets
Adoption & trust: 1 installs on skills.sh; 304 GitHub stars; 3/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
Recommended Skills
Video Editagentspace-so/runcomfy-agent-skills
Image To Videoagentspace-so/runcomfy-agent-skills
Image Editagentspace-so/runcomfy-agent-skills
Flux Kontextagentspace-so/runcomfy-agent-skills
Nano Banana 2agentspace-so/runcomfy-agent-skills
Nano Banana Editagentspace-so/runcomfy-agent-skills
Journey fit
Common Questions / FAQ
Is Media Composition safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Media Composition
## Table of Contents - [Overview](#overview) - [Required TodoWrite Items](#required-todowrite-items) - [Manifest Format](#manifest-format) - [Manifest Schema](#manifest-schema) - [Step-by-Step Process](#step-by-step-process) - [1. Parse Manifest File](#1-parse-manifest-file) - [2. Validate Component Outputs](#2-validate-component-outputs) - [3. Execute FFmpeg Composition](#3-execute-ffmpeg-composition) - [4. Verify Combined Output](#4-verify-combined-output) - [FFmpeg Composition Commands](#ffmpeg-composition-commands) - [Vertical Stacking](#vertical-stacking) - [Horizontal Stacking](#horizontal-stacking) - [Sequential Concatenation](#sequential-concatenation) - [Grid Layout (2x2)](#grid-layout-(2x2)) - [With Background Color](#with-background-color) - [Layout Options](#layout-options) - [Layout Option Details](#layout-option-details) - [Example Compositions](#example-compositions) - [Terminal + Browser Tutorial](#terminal-+-browser-tutorial) - [Side-by-Side Comparison](#side-by-side-comparison) - [Picture-in-Picture](#picture-in-picture) - [Exit Criteria](#exit-criteria) # 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. ## 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) ``` **Verification:** Run the command with `--help` flag to verify availability. ## 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" ``` **Verification:** Run the command with `--help` flag to verify availability. ### Manifest Schema | Field | Type | Required | Description | |-------|------|----------|-------------| | `name` | string | Yes | Identifier for the composition | | `title` | string | No | Human-readable title | | `components` | array | Yes | List of media components to combine | | `components[].type` | string | Yes | Source type: `tape`, `playwright`, `static` | | `components[].source` | string | Yes | Path to source file | | `components[].output` | string | Yes | Path to generated output | | `components[].requires` | array | No | Commands to run before generation | | `combine.output` | string | Yes | Path for combined output | | `combine.layout` | string | Yes | Layout mode (see table below) | | `combine.options` | object | No | Layout-specific options | ## Step-by-St