skill
Video Editing Skillpack
Public Made by Adomby adom
Adom's video editing kit: house skills for YouTube thumbnails (X-safe, brand-styled, with a builder script), titles and descriptions, plus the animated Adom logo sting (cut out on transparency, or blooming into the full-screen ADOM wordmark) with its sound effect, ready for Premiere.
← Commit history
Publish 1.0.2
5 files changed
+11−18
package.json+2−2@@ -1,6 +1,6 @@ { "slug": "video-editing-skillpack",- "version": "1.0.1",+ "version": "1.0.2", "type": "skill", "description": "Adom's video editing kit: house skills for YouTube thumbnails (X-safe, brand-styled, with a builder script), titles and descriptions, the house arrow style, plus the animated Adom logo sting (cut out on transparency, or blooming into the full-screen ADOM wordmark) with its sound effect, ready for Premiere.", "dependencies": {},@@ -96,4 +96,4 @@ "hero": { "path": "docs/hero.png" }-}+}
page.json+1−1@@ -18,7 +18,7 @@ "type": "image", "path": "screenshots/hero.png" },- "version": "1.0.1",+ "version": "1.0.2", "description": "Adom's video editing kit: house skills for YouTube thumbnails (X-safe, brand-styled, with a builder script), titles and descriptions, the house arrow style, plus the animated Adom logo sting (cut out on transparency, or blooming into the full-screen ADOM wordmark) with its sound effect, ready for Premiere.", "dependencies": {}, "files": [
skills/adom-youtube-descriptions/SKILL.md+1−1@@ -123,7 +123,7 @@ Not used on this channel, keep it that way: emoji, hashtags in the body, social (`~/.claude/skills/adom-youtube-thumbnails/SKILL.md`, with `make_thumbnail.py`). Use it to make or check any thumbnail; where this summary and that skill differ, that skill wins. -In short (1280 x 720): navy `#0d1117` background with a faint 40 px grid and a teal and purple+In short (1280 x 720): plain navy `#0d1117` background (never a grid) with a teal and purple glow along the bottom; a huge Familjen Grotesk Bold headline on the left whose last line is the teal-to-purple gradient ending in a period; a 3D board or app screenshot plus a presenter cutout on the right; at most one or two extras (house arrow, prompt bubble, starburst). The logo is the
skills/adom-youtube-thumbnails/SKILL.md+3−2@@ -2,7 +2,7 @@ name: adom-youtube-thumbnails description: >- The authority on thumbnails for Adom's YouTube channel (@adominc) and on how they look when- the link is shared on X. Style spec measured from the published thumbnails (navy grid, teal+ the link is shared on X. Style spec measured from the published thumbnails (plain navy, no grid, teal and purple glow, huge Familjen Grotesk headline with a teal-to-purple last line ending in a period, presenter cutout, 3D board or app screenshot), X-safe and YouTube-safe zones in px, the white orbital logo rule, house arrows and prompt bubbles, copy rules, a checklist, and@@ -36,7 +36,7 @@ Python lacks it). Fonts and logo load from `assets/`, so run it from anywhere. | Element | Spec at 1280 x 720 | |---|---| | Canvas | 1280 x 720, JPG (quality 92, auto-lowered) or PNG, under 2 MB |-| Background | `#0d1117` base lifting to `#0c0e1a` at the top; 40 px square grid, 1 px white lines at about 4 % opacity (measured +4 to +10 levels over the base) |+| Background | `#0d1117` base lifting to `#0c0e1a` at the top, plain. **Never a grid** or any line pattern: the first published thumbnails had a faint 40 px grid and Anastasia ruled it out for every thumbnail (2026-10-21), so the script no longer draws one | | Glow | teal `#00b8b1` radial from beyond the bottom-left corner (centre -60, 800; radius 700; about 55 % at the core, measured `#0c525e` at 10, 700); purple `#8c6bf7` radial from beyond the bottom-right (1340, 820; radius 640; about 50 %, measured `#342868` at 1270, 710) | | Headline font | Familjen Grotesk Bold (700). Confirmed by the single-story "a" in "radio", "town". Not Satoshi, not Inter | | Headline size | cap height 73 to 100 px (KiCad 73, Fusion 78, radio 85, Hydrogen 100), i.e. 112 to 150 px font size (Familjen cap = 0.65 em). Default 120 px. A long 3-line claim drops to 84 to 90 px |@@ -209,6 +209,7 @@ source images are in `/home/adom/work/thumbs/altium/specs/`). ## 9. Checklist before publishing - [ ] 1280 x 720, under 2 MB, JPG or PNG.+- [ ] Plain navy background with the two glows: no grid, no line pattern. - [ ] `--check` prints `safe zones: clear`; look at the `-xcheck.png` yourself: nothing important in the red (X) or orange (YouTube) box, nothing within 24 px of an edge. - [ ] Headline in Familjen Grotesk Bold, white lines plus one gradient last line ending in a period.
skills/adom-youtube-thumbnails/make_thumbnail.py+4−12@@ -7,7 +7,7 @@ Two ways to call it: make_thumbnail.py -o out.jpg --bg frame.png --cutout john.png \ --headline "AI PCBs in|Altium." --orbital left --check Lines are separated by "|". The LAST line gets the teal-to-purple gradient.- --bg brand (default) draws the navy grid background; a file path uses that+ --bg brand (default) draws the plain navy background (never a grid); a file path uses that image as the right-hand visual (or full bleed with --bg-mode photo). 2. Spec mode (full control, layers drawn in order):@@ -147,22 +147,14 @@ def glow_of(rgba, sigma, opacity, color): # ================================================================ background-def brand_background(glow_left=0.55, glow_right=0.5, grid=True):- """Navy base, 40 px grid, teal glow bottom-left, purple glow bottom-right."""+def brand_background(glow_left=0.55, glow_right=0.5):+ """Plain navy base, teal glow bottom-left, purple glow bottom-right. No grid, ever (Anastasia, 2026-10-21).""" bg = Image.new("RGBA", (W, H), NAVY + (255,)) # slight vertical lift toward the top (#0c0e1a measured top-left) top = Image.new("RGBA", (W, H), (12, 14, 26, 0)) m = Image.linear_gradient("L").resize((W, H)).point(lambda v: int((255 - v) * 0.5)) top.putalpha(m) bg = Image.alpha_composite(bg, top)- if grid:- g = Image.new("RGBA", (W, H), (0, 0, 0, 0))- d = ImageDraw.Draw(g)- for x in range(0, W, 40):- d.line((x, 0, x, H), fill=(255, 255, 255, 11))- for y in range(0, H, 40):- d.line((0, y, W, y), fill=(255, 255, 255, 11))- bg = Image.alpha_composite(bg, g) bg = Image.alpha_composite(bg, radial((W, H), (-60, 800), 700, TEAL, glow_left)) bg = Image.alpha_composite(bg, radial((W, H), (1340, 820), 640, PURPLE, glow_right)) return bg@@ -535,7 +527,7 @@ CHECKED = {"headline", "bubble", "badge", "text"} # always must stay out of th def compose(spec): bg = spec.get("background", {"type": "brand"}) if bg.get("type", "brand") == "brand":- canvas = brand_background(bg.get("glow_left", 0.55), bg.get("glow_right", 0.5), bg.get("grid", True))+ canvas = brand_background(bg.get("glow_left", 0.55), bg.get("glow_right", 0.5)) else: canvas = photo_background(bg["path"], bg.get("crop"), bg.get("blur", 0), bg.get("darken", 0.35), bg.get("scrim", "left"), bg.get("scrim_strength", 0.85))