# Kenerate Skills

29 production skills that let coding agents (Claude Code, Codex CLI, Cursor) do real creative work with the
[Kenerate MCP](https://kenerateai.com/app/mcp). Kenerate makes the media (images, video, music, voice, cut-outs,
upscales, dubs). The skill tells the agent the exact tool chain and money rules, and a small local Python script
(Pillow + ffmpeg) does the editing Kenerate doesn't: cutting clips together, motion graphics, captions, resizing, packing.

Download: **https://kenerateai.com/mcp/kenerate-skills.zip** · each skill: `https://kenerateai.com/mcp/skills/<name>/SKILL.md`

| Group | Skill | What it does | Local script |
|---|---|---|---|
| Video editing | `video-editing` | Trim, join with transitions, 1080p 9:16/16:9/1:1/4:5, ducked music bed, burned captions | `edit.py` |
| Video editing | `storyboard-to-film` | Shot list → key frames → clips → graded film with title / end cards, letterbox, score | `film.py` |
| Video editing | `upscale-batch` | Batch upscale / restore with the right model, before / after sheets | `compare.py` |
| Video editing | `b-roll-assembler` | B-roll cutaways / picture-in-picture over an A-roll or a voice-over, by time or spoken keyword | `broll.py` |
| Video editing | `video-reframe` | 16:9 → 9:16 / 4:5 / 1:1 with a crop that follows the action, cut-aware, previewed | `reframe.py` |
| Video editing | `transitions-pack` | Whip, flash, zoom punch, glitch, light leak, iris, wipes; showcase reel to choose | `transitions.py` |
| Video editing | `color-grade` | 10 looks or your .cube LUT on clips and stills, looks sheet, exports the grade as .cube | `grade.py` |
| Video editing | `captions-pro` | Word-by-word animated captions (highlight, karaoke, pop, bounce, typewriter) + .ass | `captions.py` |
| Video editing | `before-after` | Wipe slider, split, side-by-side, stacked or toggle comparisons + a still | `beforeafter.py` |
| Motion design | `motion-design` | Kinetic titles, lower thirds, CTA, logo sting (bold-pop, minimal, neon) | `motion.py` |
| Motion design | `slideshow-video` | Ken Burns slideshow with crossfades, captions, music | `slideshow.py` |
| Motion design | `gif-maker` | Optimized GIF / WebP / loop MP4, captions, boomerang, size cap | `gif.py` |
| Motion design | `logo-sting` | Logo reveal in 6 styles (pop, sweep, glitch, reveal, zoom-blur, assemble), transparent .mov | `sting.py` |
| Motion design | `lower-thirds` | 8 animated name-strap designs, burned in or as transparent .mov overlays | `lowerthirds.py` |
| Ads | `hook-multiplier` | N 3-second hooks on one ad body → N A/B variants + CSV | `hooks.py` |
| Ads | `ad-resizer` | One ad → 9:16, 1:1, 4:5, 16:9 with smart crop / outpaint + safe-zone check | `resize.py` |
| Ads | `ad-localizer` | Dub + captions per language, checked and named per locale | `localize.py` |
| Ads | `headline-multiplier` | One visual + N headlines → N static ads with contrast checks | `headlines.py` |
| Ads | `ad-recreator` | A reference ad's shot structure and timing rebuilt with your product, with a check sheet | `recreate.py` |
| Brand | `brand-kit` | Palette, logo variants, favicons, social templates, tokens, brand sheet | `brandkit.py` |
| Brand | `product-photoshoot-batch` | Cut-out → scenes → Amazon / Shopify / Etsy / Instagram packs | `pack.py` |
| Brand | `background-remove-batch` | Batch cut-outs composited onto brand colours / backdrops | `composite.py` |
| Brand | `product-360` | Turntable / 360 spin from angle views or one cut-out, shadow + reflection, MP4 + GIF | `turntable.py` |
| Brand | `image-editing` | Pillow pipeline: crop, resize, grade / LUT, sharpen, watermark, round, size cap, batch | `imgedit.py` |
| Social | `social-carousel` | 10-slide carousels (PNG + LinkedIn PDF), panorama splits | `carousel.py` |
| Social | `thumbnail-maker` | YouTube thumbnails 1280x720, A/B set, feed preview | `thumb.py` |
| Social | `meme-maker` | Classic / modern / label memes on images, GIFs, video | `meme.py` |
| Audio | `podcast-clip` | Audiogram: waveform, progress bar, karaoke captions | `podcast.py` |
| Audio | `music-visualizer` | Audio-reactive bars / wave / spectrum / circle video | `visualizer.py` |

## House rules every skill follows
- **No voice-over or music unless the user asks.** The agent asks first: voice-over, music, the video model's native
  audio, or silent. Voice-overs use ElevenLabs (`generate_speech`, engine `elevenlabs-eleven-v3`, always with a named
  voice from `pick_voice` / MODELS.md); music uses ElevenLabs Music (`generate_music`, `elevenlabs-music-v2.5`). Mixing
  and ducking happen locally in the scripts.
- **Model picks** come from `references/MODELS.md` (generated from the MCP server's routing table) or the free
  `pick_model` / `pick_voice` tools.
- **Costs:** `estimate_cost` first, a clear yes above ~100 credits, cheap drafts before finals.
- **Previews before finals:** contact sheets, `--preview-only`, `--showcase`, `--dry-run`.
- **Fonts:** any script with text takes `--font file.ttf` or `--font-family "Bebas Neue"`, which downloads a free
  font (OFL / Apache only, from Fontsource or the google/fonts repo) once into `./fonts` with a licence note.
  `python kmedia.py font "Inter" --weight 800` does the same by hand.

## Install

First connect the Kenerate MCP (key at kenerateai.com/app/mcp):

```bash
claude mcp add --transport http kenerate https://mcp.kenerateai.com/mcp --header "Authorization: Bearer ken_…"
```

Then install the skills: unzip so that each skill folder sits directly in the skills directory.

**Claude Code** (personal skills, available in every project):
```bash
curl -fsSL https://kenerateai.com/mcp/kenerate-skills.zip -o /tmp/kenerate-skills.zip
mkdir -p ~/.claude/skills && unzip -o /tmp/kenerate-skills.zip -d ~/.claude/skills
ls ~/.claude/skills/video-editing/SKILL.md        # verify
```
Windows (PowerShell):
```powershell
iwr https://kenerateai.com/mcp/kenerate-skills.zip -OutFile $env:TEMP\kenerate-skills.zip
Expand-Archive $env:TEMP\kenerate-skills.zip -DestinationPath $HOME\.claude\skills -Force
```
For one project only, use `.claude/skills/` in the repo instead. Claude Code picks skills up automatically when a
request matches; you can also type `/video-editing`, `/hook-multiplier`, and so on. Run `/skills` to list them.

**Codex CLI**: Codex reads skills from `~/.agents/skills` (user) and `.agents/skills` (repo):
```bash
mkdir -p ~/.agents/skills && unzip -o /tmp/kenerate-skills.zip -d ~/.agents/skills
```
Invoke them with `$hook-multiplier` or `/skills`. On older Codex builds without skills, copy
[AGENTS.md](AGENTS.md) into your repo (or `~/.codex/AGENTS.md`). It points Codex at the SKILL.md files.

**Cursor**: Cursor loads skills from `~/.cursor/skills` (and also reads `~/.claude/skills`):
```bash
mkdir -p ~/.cursor/skills && unzip -o /tmp/kenerate-skills.zip -d ~/.cursor/skills
```
Type `/` in Agent chat and pick a skill. A rule version is also available: save
`https://kenerateai.com/mcp/kenerate-skills.mdc` as `.cursor/rules/kenerate-skills.mdc`.

**Claude Desktop / claude.ai**: there's no local shell, so use the server's MCP prompts instead (the `+` menu →
Kenerate). They cover the same workflows without the local scripts.

### Local requirements
Python 3.9+, Pillow and ffmpeg. Quickest: `python -m pip install Pillow imageio-ffmpeg` (imageio-ffmpeg bundles an
ffmpeg binary). Check with:
```bash
python ~/.claude/skills/video-editing/scripts/kmedia.py doctor
```

## How the scripts behave
- They take Kenerate result URLs (or local files) directly and download them with progress.
- They print `[step/total] Label...  42%` status lines and end with one `RESULT_JSON: {...}` line (output paths, checks).
- They never call Kenerate and never spend credits. All spending goes through the MCP tools, with `estimate_cost` first.
- Outputs go to `./kenerate-out/<skill>/`.

## For maintainers
`skills/.tools/` (not shipped in the zip) holds the source of truth for the shared files and the tooling:
- `kmedia.py`: the shared helper, copied into every `scripts/` folder.
- `KENERATE.md`: the shared rules, copied into every `references/` folder.
- `MODELS.md`: model routing, audio policy and the voice catalog, generated from the MCP server
  (`cd services/kenerate-mcp && python -m kenerate_mcp.knowledge > ../../skills/.tools/MODELS.md`; don't edit it by
  hand), copied into every `references/` folder.
- `RESEARCH.md`: notes on other agent skill packs (structure, reliability patterns) that shaped this one.
- `build.py`: syncs the shared files, validates every SKILL.md against the Agent Skills spec, and writes
  `public/mcp/kenerate-skills.zip`, `public/mcp/skills/<name>/…` and `public/mcp/kenerate-skills.mdc`.
- `make_fixtures.py` + `test_all.py`: synthetic inputs and an end-to-end run of every script (no network, no credits).

```bash
python skills/.tools/build.py
python skills/.tools/test_all.py /tmp/kenerate-skilltest            # --no-path-ffmpeg: imageio fallback; --offline: skip the font download
```
