Communitygithub.com

portfolio-reel

Make a ~30-second creator / freelancer / developer portfolio intro reel (1080p60 MP4) in one fixed, friendly motion-design style (template "skill 2"). A mustard-yellow gradient asks a hook question ("Looking for a … Video editor?"), a white circle wipes to a profile hero (round avatar, badge pill, "Hello, I'm …", roles split by bars, a black "Here's my work ↑" button). The page then scrolls through 1-4 work sections on light grey with window-light shadows, each a title plus 1-3 rounded cards playing the user's own clips or showing their pictures. A yellow light wipe brings two closing lines, then a black social profile card pops up with counting stats, a cursor clicks Follow (it turns into Following) and the card flips in 3D to its back. Two UIs: "classic" (the template) and "app" (a search bar that types the hook and opens a results dropdown, a bento dashboard of glass tiles, a carousel of browser and phone mockups, a chat screen for the closing lines, and a profile card with a co...

What is portfolio-reel?

portfolio-reel is a Cursor agent skill that make a ~30-second creator / freelancer / developer portfolio intro reel (1080p60 MP4) in one fixed, friendly motion-design style (template "skill 2"). A mustard-yellow gradient asks a hook question ("Looking for a … Video editor?"), a white circle wipes to a profile hero (round avatar, badge pill, "Hello, I'm …", roles split by bars, a black "Here's my work ↑" button). The page then scrolls through 1-4 work sections on light grey with window-light shadows, each a title plus 1-3 rounded cards playing the user's own clips or showing their pictures. A yellow light wipe brings two closing lines, then a black social profile card pops up with counting stats, a cursor clicks Follow (it turns into Following) and the card flips in 3D to its back. Two UIs: "classic" (the template) and "app" (a search bar that types the hook and opens a results dropdown, a bento dashboard of glass tiles, a carousel of browser and phone mockups, a chat screen for the closing lines, and a profile card with a co...

Works with~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/chydevit/Skill-create-videos/tree/HEAD/plugins/video-skills/skills/portfolio-reel

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation


name: portfolio-reel description: Make a ~30-second creator / freelancer / developer portfolio intro reel (1080p60 MP4) in one fixed, friendly motion-design style (template "skill 2"). A mustard-yellow gradient asks a hook question ("Looking for a … Video editor?"), a white circle wipes to a profile hero (round avatar, badge pill, "Hello, I'm …", roles split by bars, a black "Here's my work ↑" button). The page then scrolls through 1-4 work sections on light grey with window-light shadows, each a title plus 1-3 rounded cards playing the user's own clips or showing their pictures. A yellow light wipe brings two closing lines, then a black social profile card pops up with counting stats, a cursor clicks Follow (it turns into Following) and the card flips in 3D to its back. Two UIs: "classic" (the template) and "app" (a search bar that types the hook and opens a results dropdown, a bento dashboard of glass tiles, a carousel of browser and phone mockups, a chat screen for the closing lines, and a profile card with a cover banner and a QR code on its back). Five colour styles (mustard, the template; midnight, sunset, amber, mint) and ten effects (bokeh, light sweeps, a highlighter under the name, an orbiting avatar ring, scroll motion blur, section numbers, card glare, a tag ticker, click confetti, film grain). Every frame is drawn in code, with typing, pop, whoosh and click sounds over a synthesised lo-fi beat (or your own track), mixed to -14 LUFS. English or Khmer. Use it whenever the user wants a portfolio reel, "about me" or intro video, a video CV or showreel for a creator, freelancer, editor, designer or developer, a "hire me" or "here's my work" video, a reel like "skill 2" or "like this template" with a profile card, or types /portfolio-reel, even if they only hand over a photo, a few clips and their name.

Portfolio reel (template: "skill 2")

This skill makes one finished ~30 s intro reel from one config file, promo.json. A canvas scene draws every frame in headless Chrome and plays the user's clips inside the cards. There is no stock footage, AI video or template service. The structure copies the pacing of the reference reel skill2.MP4 (a TikTok creator intro). Only the techniques are copied, never its footage, words, names, handles or watermark.

Time (3 sections)Scene
0-2.3 smustard gradient, two big soft circles slide in; hook[0] types word by word, then hook[1] pops up big and bold
2.3-2.9 sa white circle wipes up from the bottom; the avatar pops in as a small yellow disc
2.9-6.4 sprofile hero on white: the avatar grows into a big circle (with a yellow ring, or a yellow duotone), then the outlined badge pill with a star, hello word by word, roles split by thin bars, and a black button pill with ↑ in a white circle. The arrow shoots up and the page scrolls
6.4-20.5 sone page per section (4.6 s each) on light grey with soft window-light shadows: a gradient title, then 1-3 rounded cards trailing the scroll and floating. Videos play, pictures slowly zoom. Portrait cards stand tall, landscape cards go wide, mixed rows stagger
20.5-24.4 sa yellow light blooms from the bottom-left back to the gradient; cta[0], then cta[1], word by word
24.4-30.3 sa black profile card pops from a dot (avatar or logo, handle, name, up to 3 counting stats, two buttons). A cursor clicks the first button, which turns grey and shows clicked, then the card flips in 3D to its back

The length is about 30 s with 3 sections, 4.6 s more or less per section, and a little longer with long texts.

Two UIs: "ui": "classic" (default) or "app"

app keeps the same timeline and texts, but every scene is a modern app screen on a moving mesh gradient:

Timeapp scene
hooka glass search bar types hook[0] hook[1]; a results dropdown lists the person (avatar, name, roles) and the first two sections; the cursor clicks the person
herothe clicked result grows into a bento dashboard of glass tiles: a tall photo tile (name and handle), the greeting tile (badge, hello with the highlighter, role chips), a stats tile counting profile.stats, a button tile the cursor clicks, and a tile listing the sections
sectionsa horizontal carousel, one slide per section: a big number, the title, "n works", a progress bar on top. Work shows in device mockups: landscape clips in a browser window (traffic lights, address bar site/section-title), portrait clips in a phone, cascading across the right side
ctaa chat screen: typing dots, then cta[0] and cta[1] arrive as message bubbles from the person (the last one in the accent colour)
carda profile card with a gradient cover banner, overlapping avatar, handle, name, counting stats and two pill buttons; the cursor clicks Follow (confetti), then it flips to a QR code of profile.qr / profile.back (made with qrencode when installed), with the address under it

site (optional) sets the address shown in the browser mockups, by default profile.back. Every style and effect works in both UIs (in app, orbit and ticker are not used).

Styles and effects

"style" picks a colour theme. Dark styles get dark pages with a faint grid and glowing cards instead of window shadows.

StyleLook
mustard (default)the template: mustard-yellow gradient, white hero, light grey pages, black pill, blue buttons
midnightindigo to black, neon cyan and violet, dark pages, glowing cards
sunsetpeach to pink, warm white pages, coral titles and buttons
ambergold on near-black (a developer or portfolio look), dark pages, amber pill and buttons
mintmint to teal, white pages, green titles

"colors" overrides any single colour of the style.

All effects are on by default. Turn one off with "effects": {"ticker": false}, or all of them with "effects": false for the plain template look:

EffectWhat it does
bokehsoft light particles drift up on the gradient scenes
shinea light sweep over the big question, the button and the profile card, plus echo rings on the circle wipe and a pulse ring on the button
markera highlighter swipes under the name (text.highlight picks the words, or everything after the second word)
orbita dashed ring with three dots turns around the avatar
blurvertical motion blur while the page scrolls
labels"01 / 03" above each section title and an underline that draws in
glarea diagonal glare crosses each work card after it lands
tickerbig outlined tags scroll behind the closing lines (text.tags, or else the roles and section titles)
confettia confetti burst in the style's colours when the button is clicked
grainfilm grain and a soft vignette over everything

To let the user choose, render the same 4 moments in every style (a "style board") before the full render. Use render.mjs --times on copies of promo.json that differ only in style.

Requirements: ffmpeg, Node 22+, Google Chrome or Chromium (CHROME_PATH), and a Python with numpy and scipy (PROMO_PY; promo.sh finds one by itself).

Workflow

1. Gather what the reel needs

  • Avatar: a portrait photo, face and shoulders. Give crop: [x, y, size] (pixels) so the face sits in the circle, and check the preview. With a busy or light background, "avatarStyle": "duotone" makes a dark figure on yellow, as in the template.
  • Sections (1-4): a short title each (2-4 words) and 1-3 clips: videos ({"file", "at"}, 5.5 s from at play in the card) or pictures. Use the user's best work, and mix portrait and landscape for variety.
  • Texts: keep them short.
    • hook: a small line and a big 1-2 word question.
    • badge: a slogan of up to about 50 characters.
    • hello: "Hello, I'm …".
    • roles: 2-4 short roles.
    • button: the button label.
    • cta: two closing lines.
  • Profile card: handle, name, up to 3 stats, buttons, clicked and back. Only use real numbers (from the user, their site or their profile). A string value (like "2023") is shown as is, without counting.
  • Language: for Khmer, set "lang": "km" and write natural Khmer. Kantumruy Pro is bundled.
  • Optional: style, effects, logo (inside the card's circle), colors, text.highlight, text.tags, music (+ musicStart), sfxDir.

2. Write the project

Make a project folder and copy examples/creator-reel.json into it as promo.json, then edit it. Every key is described in references/config.md. Paths are relative to the project folder.

3. Preview (about 10 s)

<skill>/scripts/promo.sh <project>/promo.json --preview

This cuts the clips and renders about 13 stills to out/<name>-preview.png. Read it and check:

  • the avatar crop;
  • that no line is crammed (long texts shrink);
  • that each section's cards show good frames: change at;
  • the profile card's numbers.

4. Render (about 2 minutes; run it in the background)

<skill>/scripts/promo.sh <project>/promo.json --jobs 4

The stages run in this order: assets, plan, render, mix, encode. --from mix re-mixes the sound without rendering the frames again.

Output: out/<name>-1080p60.mp4 and out/<name>-contact.png.

5. Check before handing it over

  • Read the contact sheet.
  • ffprobe should show the length that build/cues.json gives. The mix is normalised to -14 LUFS / -1 dBTP.
  • You can't hear the result, so tell the user what you checked and ask them to listen.

Tuning

  • Timing: plan() in scripts/scene.mjs. SEC is the length of a section and SCROLL the length of a page scroll. The cues in buildCues() follow automatically.
  • Look:
    • Themes are STYLES and effects are EFFECTS in scene.mjs; colours can also come from colors.
    • The card layout is layout().
    • The window shadows are buildShade().
    • The flip is drawFlip(), strips with perspective.
  • Sound: SFX in scripts/audio.py lists the file names tried in sfxDir. make_bed() is the lo-fi beat.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

brand-loop

Make a seamless looping background video of glossy 3D liquid blobs in a brand's colours. Two colour families float slowly in zero gravity, each merging and pinching off like mercury, on a soft off-white studio backdrop with a warm gradient, faint ripple rings, soft drop shadows and shallow depth of field. It renders in Blender EEVEE at 4K 60 fps as H.264, HEVC 10-bit and 1080p, and the last frame flows into the first. Use it whenever the user wants a looping background, brand backdrop, abstract 3D or liquid loop, motion background for a website, stream, event screen or presentation, a "seamless loop", or a background for their logo or text, or types /brand-loop.

brand-promo

Make a ~50-second dark, kinetic studio showreel / promo video from a brand's own videos, its logo animation and a few lines of text. It has a typed intro, a ring of 3D cards, a glitchy title drop, and 3-5 spotlights (each work on a tilted card or a phone, playing its own sound). Then "Your story… next.", a 3D rush of clips, and the liquid logo reveal with the name, chips and website. It comes with an original synthesised score, narration (VoxCPM2, English or Khmer) and sound effects, as a 1080p60 MP4. Use it whenever the user wants a showreel, studio reel, portfolio video, agency or brand promo, "demo video" of their work, a promo like a template video, or a Khmer version of one, or types /brand-promo, even if they only hand over a few videos and a logo.

generate-logo

Turn any logo image (PNG, JPG, WebP or SVG) into finished 5-second animated logo reveals in five styles (liquid, neon, bounce, lens, rise). Each comes as a 1080p60 MP4 with synthesised sound effects, a transparent WebM (optional ProRes 4444 .mov) for video editors, and a keyframe sheet. It can add a two-tone wordmark, render square or vertical versions for social media, and build a bespoke style for a particular logo. Use it whenever the user wants a logo animation, animated logo, logo reveal, intro, outro or sting, motion logo, a brand intro for a video, or "make my logo move", or types /generate-logo, even if they only attach a logo and say "animate this".

saas-promo

Make a kinetic SaaS / startup / product / developer promo video (1080p60 MP4) in one fixed, fast motion-design style: an ~11-second teaser, or a ~50-second version with chapters (one per product or project) cut on the beat of the user's own song. It opens with glyph flashes and purple/lime neon shapes, then types a word with a cursor while a 3D swirl of your screenshots orbits it. Cards slide onto a painted meadow and build a bento wall with words typing inside them, and the camera zooms into a card. A glowing gradient orb then reveals the headline word by word, and a glitch drops into a long-exposure flower on a blue-to-orange sky with flying symbols and "From … / To …". Every frame is drawn in code, with typing, whoosh, riser and impact sound effects and a synthesised ambient bed or your own song (its tempo and drop are measured, so every cut lands on the beat), mixed to -14 LUFS. English or Khmer. Use it whenever the user wants a SaaS promo, product or app teaser, a developer or...

Related Skills