Guizang Social Cards
op7418/guizang-social-card-skill
Produces social card sets for Xiaohongshu and WeChat: carousels, Live Photo motion cards and puzzle layouts, and WeChat cover pairs, rendered from single-file HTML.
The music engine, for a song or a video's score. An agent skill from GTKottman/mortiflix-oss.
$ npx skills add GTKottman/mortiflix-oss --skill music -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install GTKottman/mortiflix-oss music --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/GTKottman/mortiflix-oss.git skills-src && mkdir -p .claude/skills && cp -r skills-src/pipelines/_shared/skills/music .claude/skills/music && 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 "music" agent skill from https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/music into .claude/skills/music/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "music", 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/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/musicType 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 GTKottman/mortiflix-oss --skill music -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install GTKottman/mortiflix-oss music --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GTKottman/mortiflix-oss.git skills-src && mkdir -p .agents/skills && cp -r skills-src/pipelines/_shared/skills/music .agents/skills/music && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "music" agent skill from https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/music into .agents/skills/music/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "music", 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 GTKottman/mortiflix-oss --skill music -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install GTKottman/mortiflix-oss music --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GTKottman/mortiflix-oss.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/pipelines/_shared/skills/music .cursor/skills/music && 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 "music" agent skill from https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/music into .cursor/skills/music/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "music", 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/GTKottman/mortiflix-oss.git --path pipelines/_shared/skills/music--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 GTKottman/mortiflix-oss --skill music -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install GTKottman/mortiflix-oss music --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GTKottman/mortiflix-oss.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/pipelines/_shared/skills/music .gemini/skills/music && 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 "music" agent skill from https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/music into .gemini/skills/music/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "music", 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 GTKottman/mortiflix-oss musicInstalls 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 GTKottman/mortiflix-oss --skill music -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/GTKottman/mortiflix-oss.git skills-src && mkdir -p .github/skills && cp -r skills-src/pipelines/_shared/skills/music .github/skills/music && 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 "music" agent skill from https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/music into .github/skills/music/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "music", 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 GTKottman/mortiflix-oss --skill music -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install GTKottman/mortiflix-oss music --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GTKottman/mortiflix-oss.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/pipelines/_shared/skills/music .opencode/skills/music && 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 "music" agent skill from https://github.com/GTKottman/mortiflix-oss/tree/main/pipelines/_shared/skills/music into .opencode/skills/music/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "music", 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.
musicThe music engine, for a song or a video's score. An agent skill from GTKottman/mortiflix-oss.
Music is an agent skill from GTKottman/mortiflix-oss. The music engine, for a song or a video's score. Strudel writes the notes, every part on its own MIDI channel; the engine checks them (harmony lock, the story's intensity curve, hits on the picture), captures them as MIDI, then an instrument is chosen for every channel from its real notes and auditioned, and the piece is rendered and mastered, or finished by the owner in their own DAW from the MIDI pack. Use for any music step, a song, or a change to music.
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 17 other files (for example `craft/genre-research.md`, `craft/harmony-lock.md` and `craft/melody-craft.md`).
It sits in Media & Creative. The repository describes itself as: A motion design studio on your own machine: Claude makes the video step by step, you approve every stage. Bring your own Claude Code or API key. The licence is AGPL-3.0.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8c86e83. 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.
Ships script files (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodeffmpegFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Music loads about 4.6k tokens when it runs. Until then it costs about 117 tokens; SKILL.md has 2,077 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 GTKottman/mortiflix-oss at commit 8c86e83, republished under its AGPL-3.0 licence (© GTKottman). 2,077 words, ~4,619 tokens.
.claude/skills/music/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.One engine makes all of Mortiflix's music, a song or a video's score. It works in stages; each stage writes a file, the engine checks it, and nothing moves on until the check passes. The notes and the sounds are separate: the score is only music (notes on channels), its MIDI is captured, and only then is an instrument chosen for every channel. So the same MIDI can be played by Strudel or taken into any DAW.
genre ─▶ blueprint ─▶ score ─▶ MIDI ─▶ instruments ─▶ audition ─▶ master
(songs) the plan notes every a sound per each sound Strudel's render, mastered
only channel channel, from across its ─ or ─
its real notes range the owner's own, from the MIDI pack| Stage | You write | The engine (node $M <command>) | It writes |
|---|---|---|---|
| Genre (songs) | music/genre.json | genre: every field, 5+ sources, hook and beat elements | music/GENRE.md |
| Blueprint | music/blueprint.json | plan: sections, chart, roles/channels, genre signature, length | music/BLUEPRINT.md |
| Score | music/score.strudel.js | check: harmony lock, intensity curve, hits, nothing past the end | music/check.json |
| MIDI | (nothing: it's captured) | check, once it passes | music/notes.json, out/music/midi/ |
| Instruments | music/instruments.json | instruments: every channel, register clashes, palette rules | music/instruments-check.json |
| Audition | (nothing) | audition: lowest, middle, highest note of every part | out/music/audition/*.wav |
| Master | (nothing) | master (songs) or render (a video's stand-in) | out/music/master.wav, .mp3, stems/ |
| Owner's master | (the owner imports it) | own-master: is it there, does it fit | music/own-master/ |
After every command the engine rewrites music/MUSIC-SHEET.md: every channel with its range, instrument, level,
audition result and why, the story measured against the plan, the master's numbers. It's how the owner (and the next
session) sees exactly how the music was made. node $M sheet rewrites it on demand.
M=.claude/skills/music/strudel.mjsRead craft/genre-research.md before a genre, craft/picture-scoring.md before a video's first blueprint,
craft/melody-craft.md before writing the motif, craft/harmony-lock.md before the score, and
craft/rich-voicing.md once the lock passes.
$MFX_MUSIC is {"engine": "strudel" | "none", "midi": true | false}. Strudel is at $MFX_STRUDEL, and renders in
the Chrome at $MFX_CHROME. If either is missing: mfx needs-you "Music isn't set up: run mortiflix setup music, then resume." Never improvise music any other way, and never use another engine.
Who finishes the music comes from the brief (the music or finish answer):
Research the genre into music/genre.json (the format and the method: craft/genre-research.md), then
node $M genre until it passes. A song is written from its genre: its tempo range, lineup, beat grids, harmony,
hook traits and, above all, its unforgettable elements.
Write in music/SPOTTING.md (videos) or at the top of the blueprint (songs):
confusion -> recognition -> confidence. For a song,
it's the topic translated into audible behaviour: what the listener feels change from the first bar to the last.Build the spotting map from the real timing: voice/timing.json (every line and word), the animatic's cut and
beat list (video/src/timing.ts or its plan), and its length (ffprobe). One row per event that changes meaning:
time | event | significance | response
0.00 | black, first word | establish | pad alone, low register
8.40 | "...for the first time." | the problem lands | aftermath: drop out for a bar
31.20 | logo resolves | structural: the turn | direct hit, tonic arrivalClassify each as structural, dramatic, physical or optional, and choose for each: direct hit, anticipation (change just before), aftermath (let the image land, then react) or no hit. Hit the few that change meaning, not every cut.
Choose the BPM (and offset_sec, where bar 1 starts in the video) so the structural hits fall on bar lines or strong
beats: seconds per bar = beats_per_bar × 60 / BPM. Test tempos, don't force awkward bars:
// candidate tempos, scored by how far each hit lands from its nearest beat
for (let bpm = 70; bpm <= 140; bpm += 0.5) { const beat = 60 / bpm; const err = hits.map((t) => Math.abs(((t - off) / beat) - Math.round((t - off) / beat)) * beat); /* keep the smallest max(err) */ }A minor event may sit between beats. If one tempo can't serve the structural hits, move offset_sec, or use a
pickup, a held bar or a section of a different length inside the music, never a tempo that drifts.
music/blueprint.json{
"title": "a real title", "bpm": 96, "meter": "4/4", "bars": 48, "scale": "D:dorian", "offset_sec": 0.6,
"dramatic_reading": "confusion -> recognition -> confidence",
"style": "songs: one dense line of descriptors, under 1000 characters: genre, instruments and their roles, groove, mood",
"genre_signature": [ { "id": "dusty-breakbeat", "carries": "beat", "how": "half-time break, ghosted snares", "where": "from bar 9" } ],
"motif": { "rhythm": "...", "contour": "...", "length_bars": 2, "role": "Glass hook", "returns": ["bar 17, an octave up", "bar 41, augmented"] },
"sections": [
{ "name": "The quote that comes back", "start_bar": 1, "end_bar": 8, "function": "establish: pad and sub only, the motif withheld", "intensity": 2, "picture": "the $5,400 price counts up" }
],
"hits": [ { "t_sec": 31.2, "bar": 13, "beat": 1, "kind": "direct", "what": "logo resolves" } ],
"chart": [ { "bars": [1, 8], "chords": ["Dm9", "Cmaj7", ["Gm7", "A7sus4"], "Dm9"] } ],
"roles": [ { "channel": 1, "harmony": "bass", "name": "Sub", "job": "roots, the floor", "instrument_idea": "sine, low-passed" } ],
"ending": "how it ends and why (a held chord under the end card, or a question left unresolved)"
}Videos use offset_sec, hits and picture; songs use style and genre_signature (and leave the others out).
Decide in this order: the motif and hook (melody craft) → tempo, meter and scale → the chart → the roles → the story.
function says what happens: establish, develop, destabilise,
withhold, release, reinterpret, resolve, and what rises or is held back.intensity (0-10) is the energy curve, section by section (a video's follows the picture): the check measures
each section (parts playing, notes per beat, velocity, range) and fails if the order disagrees. Builds really build;
breakdowns really thin out. Don't raise everything at once: contrast makes intensity legible.instrument_idea (the instruments stage chooses the real sound).genre_signature names which of the genre's unforgettable elements carry the hook and the beat; the
length comes from the genre's length unless the brief fixed it (then "length_fixed": true).node $M plan checks it and writes music/BLUEPRINT.md, the readable version (it's what the owner reviews for a song).
music/score.strudel.js, notes onlysetcpm(96 / 4) // BPM / beats per bar: one cycle is one bar
const BARS = 48
const cue = (p) => p.filterWhen((t) => t < BARS) // every part ends with the piece (Strudel loops otherwise)
const lift = "<0!12 1!20 0!4 1!12>" // a section mask, one value per bar: off 1-12, on 13-32, off 33-36, on 37-48
sub: cue(note("<d2 c2 [g1 a1] d2>").velocity(.8)).midichan(1)
pad: cue(note("<[d3,f3,a3,c4,e4] ...>").velocity(.6)).midichan(2)
hook: cue(note("<[a4 ~ c5 d5] ...>").velocity("<.7 .85>").mask(lift)).midichan(3)
drums: cue(note("[36 ~ ~ 36 38 ~ 36 ~], [42*8]").velocity("<.8 .95>").mask(lift)).midichan(10)cue(…), with .midichan(n) = its role's channel..velocity() (the playing dynamic: it goes into the MIDI),
structure (masks, <…> sequences, arrange()). No .s(), filters, effects or .gain(): those belong to the
instruments, and the engine warns when the score sets them.<…> sequences with one value per bar, aligned to the blueprint's bars. Name each mask
after its section.node $M check [--video-sec <animatic length> --fps <fps>]It reports the harmony lock, every hit's distance from its frame, parts that play past the end, roles that never play, and the intensity curve: a sparkline per section, asked vs measured. Iterate until 0 problems. Then read the curve against the story: does it rise where it should, does it hold back under the busiest narration?
When it passes, the score's notes become the MIDI: music/notes.json (every channel's notes in beats, with
velocity) and out/music/midi/ (one .mid per channel, the whole arrangement in one file, tempo, meter, section names
and hit points as markers, and CUE-SHEET.md). From here on the MIDI is the music: the instruments are chosen from it,
and the owner can take it into any DAW. The check also prints where each channel plays (lowest, middle, highest note).
node $M instruments lists each channel's range from the MIDI and the built-in sounds. Write music/instruments.json:
{
"concept": "the sound of the whole piece in two sentences",
"parts": [
{ "channel": 1, "role": "Sub", "sound": "sine", "set": ".lpf(300).release(.3)", "gain": 0.8, "pan": 0, "character": "dark", "why": "a pure floor under everything" },
{ "channel": 3, "role": "Glass hook", "sound": "sine", "set": ".fm(3).fmh(3.5).decay(.4).sustain(.2).delay(.25)", "gain": 0.3, "pan": 0.35, "character": "bright", "why": "glass, for the lamp" },
{ "channel": 10, "role": "Drums", "gain": 0.9, "why": "dry and close",
"kit": { "36": { "sound": "sine", "set": ".penv(24).decay(.2).sustain(0)" },
"38": { "sound": "pink", "set": ".decay(.12).sustain(0)", "gain": 0.5 },
"42": { "sound": "white", "set": ".hpf(7000).decay(.03).sustain(0)", "gain": 0.25 } } }
]
}sound: Strudel's built-in synths need no downloads and carry no licence questions: sine, triangle, square,
sawtooth, supersaw, pulse, and white/pink/brown/crackle noise. A sample or soundfont needs "source"
(where it comes from and its licence, also in assets/SOURCES.md), and only when the licence allows the owner's use.set: the sound's shaping, as Strudel methods: filters (.lpf .hpf .lpq .lpenv), envelopes (.attack .decay .sustain .release), FM (.fm .fmh), .vib, .penv (pitch envelope, for drums), .shape .distort, .crush .coarse (lo-fi), .room .size, .delay .delaytime .delayfeedback. It can't change notes, timing or the channel.gain is the part's level in the mix (velocity from the score still shapes every note); pan runs -1 to 1; each
channel gets its own effects bus, so one part's reverb never smears another's.character: dark, warm, neutral, bright or lofi; why: what the sound does for the part.Choose for this genre and this piece, as a palette that sounds good together, not just good alone. The check enforces what it can:
lofi) sound;And what it can't: every song should sound different from the last (read TASTE.md and earlier projects' palettes);
don't reach for the same sound everywhere; a held pad wants a slow attack, a pluck a fast decay.
Then node $M audition: every instrument plays its part's lowest, middle and highest note (every kit piece for
drums), one per bar, into out/music/audition/. A silent or clipping sound fails here in seconds, not in the final
mix. Fix and audition again until it passes.
node $M master renders the score with its instruments (out/music/mix.wav), renders every channel's
stem (out/music/stems/), checks no part is silent or clipping alone, measures the mix's balance (low end, mud,
width), and masters to -14 LUFS with the true peak at or below -1 dBTP: out/music/master.wav and .mp3. Act on
its balance notes (they come from measurements: a muddy mix, a thin low end, a narrow image) by changing
instruments.json (levels, pans, filters), then master again.node $M render [--stems] writes out/music/score.wav with the instruments, for the
review against the picture.You can't hear the render. Look at it: ffmpeg -i out/music/master.wav -lavfi showspectrumpic=s=1600x400 music/spectrum.png (each section's density and register should be visible where the blueprint put them). Say in the
note that these are measurements, not listening.
The music starts at offset_sec. Duck it under the speech and finish at the delivery loudness:
ffmpeg -i voice/voice.wav -i <the music> -filter_complex \
"[0:a]asplit=2[v1][v2];[1:a]adelay=600|600,volume=-4dB[m];[m][v1]sidechaincompress=threshold=0.03:ratio=8:attack=20:release=450[duck];\
[v2][duck]amix=inputs=2:normalize=0[mix];[mix]loudnorm=I=-14:TP=-1.5:LRA=11" -ar 48000 audio/mix.wav(adelay is offset_sec in milliseconds; <the music> is the owner's master when there is one, otherwise
out/music/score.wav.) Music sits about 18 dB under the voice while it speaks and comes up in the gaps. Sound effects
go on top, sparingly: when an effect already lands an impact, the music prepares or answers it instead of doubling it.
When the brief says the owner finishes the music from the MIDI:
node $M own-master. If there is no master yet: mfx needs-you "The score is approved. On the project page, Music › Download MIDI: give each channel its sound in your DAW, mix, export from bar 1 to the end, then Import your master (or: mortiflix music <project> --import <file>)." Importing resumes the project.own-master reports how it fits: its length against the score, and whether its first sound
arrives with the MIDI's first note (a master that starts late puts every hit late). Pass its warnings on in the next
note. Use music/own-master/master.wav as the music from then on; never re-render over it.music/MUSIC-SHEET.md. The note: the dramatic reading, the hits and how each is
played, the intensity sparklines from the check, and (when the owner finishes it) that the MIDI pack is ready on the
project page.PIPELINE.md.At most one question, with a default. Notes on music come back as times: the bar is
floor((t - offset_sec) / seconds_per_bar) + 1. Change the blueprint first when the note is about the story, then
the score; run the check again (it recaptures the MIDI), then the instruments.
The MIDI is always written (section 6). When $MFX_MUSIC has "midi": true, or the owner finishes the music
themselves, the final delivery also carries out/music/midi/ and the stems (render --stems) so the owner can remake
or extend the music in their own DAW. The owner downloads it from the project page (Music › Download MIDI) or with
mortiflix music <project> --midi pack.zip.
© GTKottman, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 15 other files in pipelines/_shared/skills/music of GTKottman/mortiflix-oss.
Open the folder on GitHubat commit 8c86e83
Music 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 |
|---|---|---|---|---|---|---|
| Music this skillGTKottman/mortiflix-oss | 476 | — | ~4.6k | Automated safety check: Pass | AGPL-3.0 | |
| Guizang Social Cardsop7418/guizang-social-card-skill | 7.4k | 1 repos | ~7.8k | Automated safety check: Pass | AGPL-3.0 | |
| Weekly Changelog Videoheygen-com/hyperframes | 59k | — | ~3.3k | Automated safety check: Pass | Apache-2.0 | |
| Anthropic Brand Stylinganthropics/skills | 180k | 30 repos | ~559 | Automated safety check: Pass | Apache-2.0 | |
| MoneyPrinterTurbo Video Generatorharry0703/MoneyPrinterTurbo | 129k | — | ~2.1k | Automated safety check: Warn | MIT | |
| Brag Slim Launch Video Makerlatent-spaces/brag | 14k | 1 repos | ~1.9k | Automated safety check: Pass | MIT |
op7418/guizang-social-card-skill
Produces social card sets for Xiaohongshu and WeChat: carousels, Live Photo motion cards and puzzle layouts, and WeChat cover pairs, rendered from single-file HTML.
heygen-com/hyperframes
Turns a weekly changelog markdown file into a branded HyperFrames video with voiceover, animated mock-UI scenes and captions, using fonts, background and scripts bundled in the skill.
anthropics/skills
Applies Anthropic's brand colors and fonts to artifacts such as PowerPoint slides, using fixed hex values for text and accents, Poppins headings and Lora body text.
harry0703/MoneyPrinterTurbo
Installs and runs MoneyPrinterTurbo to turn a topic or script into a finished short video with voice-over, subtitles, stock footage and music.
latent-spaces/brag
Builds a short, shareable launch video with music and motion from a project directory or a website URL, using only tools already on the machine.
heygen-com/hyperframes
Finds, generates and edits media for HyperFrames video projects: music, sound effects, images, icons, logos, voiceovers, captions and color grades.
GTKottman/mortiflix-oss
3D work in the studio's own Blender with its toolkits: MoBlend (MoGraph cloners, effectors, fields, MoText, fracture), Nova FX (particles, fire, sparks, fireworks), Camera (framing, shot presets…
GTKottman/mortiflix-oss
Build, preview and render the video in Remotion (React): project setup from the template, stills for style frames, animatic and final renders through the studio's render queue.
GTKottman/mortiflix-oss
Designing every cut of a video before the animatic - for each change from one style frame to the next, the object or idea that carries it, a transition chosen from the owner's remotion-transitions…
GTKottman/mortiflix-oss
Narration, sound effects and music beds in the voice the studio set up (ElevenLabs, Qwen3-TTS on this machine's GPU, or the owner's own voice from the recording booth): lines from the approved…
GTKottman/mortiflix-oss
Finding and downloading stock assets (footage, images, illustrations, 3D models, sound effects, fonts) from the asset sites the owner uses, in the owner's own Chrome with browser-harness.
GTKottman/mortiflix-oss
Check a rendered video before anyone else sees it: format, black or frozen frames, loudness, true peak, and a frame sheet to look at.
Categories
The music engine, for a song or a video's score. An agent skill from GTKottman/mortiflix-oss. Music is an agent skill from GTKottman/mortiflix-oss. The music engine, for a song or a video's score.
Music fits situations like: A change to music.
Run `npx skills add GTKottman/mortiflix-oss --skill music -a claude-code`. Or copy the skill folder (pipelines/_shared/skills/music in GTKottman/mortiflix-oss) into .claude/skills/music in your project. Claude Code loads it when a task matches its description.
Run `npx skills add GTKottman/mortiflix-oss --skill music -a codex`. Or copy the skill folder (pipelines/_shared/skills/music in GTKottman/mortiflix-oss) into .agents/skills/music 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 GTKottman/mortiflix-oss --skill music -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/music, .gemini/skills/music, .github/skills/music and .opencode/skills/music in your project.
Going by SKILL.md and its folder, Music needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node and ffmpeg). Our summary lists: Node.js.
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.
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.
Music is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.6k tokens (SKILL.md is roughly 18k 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 Music: Guizang Social Cards (op7418/guizang-social-card-skill, 7.4k stars), Weekly Changelog Video (heygen-com/hyperframes, 59k stars), Anthropic Brand Styling (anthropics/skills, 180k stars) and MoneyPrinterTurbo Video Generator (harry0703/MoneyPrinterTurbo, 129k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
GTKottman (a GitHub user) maintains it in GTKottman/mortiflix-oss, which has 476 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 8, 2026.
Source: GTKottman/mortiflix-oss on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.