[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C6MFQ2V4FFBFSZJHFQEF6V":3,"skill-same:01M6C6MFQ2V4FFBFSZJHFQEF6V":79},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6C6MFQ2V4FFBFSZJHFQEF6V","video-timeline-bar",null,"Chapter timeline bar under every frame and a title card crossfaded onto a video. Use when making a chaptered demo video seekable at a glance, or adding a title card.","laurigates\u002Fclaude-plugins","laurigates","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13014001?v=4","01M6C59YHWS9C7KMXKSRX1YXNP","Lauri Gates","01M6C59YP2APG9YAM4DWYQYGFJ",60,"MIT","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fvideo-plugin\u002Fskills\u002Fvideo-timeline-bar\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"timeline","Video","video timeline bar","bar","demo video","demo","Bash","read","use","glance","card","at","frame","title","when","2026","2026-11-10 10:12:30",false,"---\nname: video-timeline-bar\ndescription: Chapter timeline bar under every frame and a title card crossfaded onto a video. Use when making a chaptered demo video seekable at a glance, or adding a title card.\nallowed-tools: Bash, Read\ncreated: 2026-10-29\nmodified: 2026-10-29\nreviewed: 2026-10-29\n---\n\n# Timeline Bar and Title Card\n\nTwo scripts for assembling a chaptered demo video. `title-card.sh` makes a\ntitle card and can crossfade it onto the front of a video, adding a chapter for\nit. `timeline_bar.py` then draws a bar under every frame showing where the\nviewer is among the chapters. Both were ported from shoreline-recon's bar\nscript and demo-video assembly, with its project-specific colours turned into\noptions.\n\n## When to Use This Skill\n\n| Use this skill when... | Use something else when... |\n|---|---|\n| A video has chapters and viewers should see them on screen | Writing the chapters into a YouTube description — `video-chapters-youtube` |\n| A demo needs a title card with its name and context | Muxing a song — `video-add-music`; the bar pass copies existing audio |\n\n## Order\n\nTitle card first, bar last. The card adds a `Title` chapter and shifts the rest,\nand the bar is drawn from the chapters it finds. Run the bar pass on the\nhighest-quality intermediate, since it re-encodes.\n\n## Title Card\n\n```bash\n\"${CLAUDE_SKILL_DIR}\u002Fscripts\u002Ftitle-card.sh\" titled.mp4 --title \"shoreline-recon v1\" \\\n  --subtitle \"Water-aware splats and meshes · Reposalmi pier, Helsinki\" \\\n  --detail \"Laajasalo side · Vartiosaari side\" --before joined.mp4 --crf 20\n```\n\n| Output | What you get |\n|---|---|\n| `card.png` | The card alone (`--size`, default 1920x1080) |\n| `card.mp4` | `--seconds` of the card fading in from and out to black over `--fade` |\n| `out.mp4 --before VIDEO` | The card, then VIDEO crossfaded in over `--fade`. VIDEO's chapters and audio shift by `seconds - fade`, and a `--chapter-title` chapter covers the card. Size and frame rate follow VIDEO |\n\nThe layout is an accent stripe (`--accent`, default teal `#14b8a6`) beside up to\nthree left-aligned lines, designed at 1920x1080 and scaled. The font is\n`$VIDEO_FONT` (default macOS Helvetica). The script checks the output's chapter\ncount (input + 1) and duration (input + offset) and prints `STATUS`.\n\n## Timeline Bar\n\n```bash\nuv run -q --no-project --with pillow==13.0.0 --with numpy==2.5.4 python -I \\\n  \"${CLAUDE_SKILL_DIR}\u002Fscripts\u002Ftimeline_bar.py\" titled.mp4 out.mp4 --bar 80 \\\n  --accent title=#78808c --accent splat=#14b8a6 --accent mesh=#f59e0b\n```\n\nThe bar has three rows:\n\n1. Group names (the text before `--sep` in chapter titles) over their spans.\n2. One unlabelled block per chapter, with a playhead and progress through the\n   current chapter.\n3. A caption naming the current chapter, the next one, and elapsed \u002F total time.\n\nNo text sits inside a block, so any number of chapters fits. The output is `--bar` px taller than the input.\n\n| Option | Default | Effect |\n|---|---|---|\n| `--bar` | `80` | Bar height (even). The layout is drawn for 80 and scales with it; use 80 at 1920 wide, 54 at 1280 |\n| `--accent KEY=COLOUR` | none | Chapters whose label contains KEY (case-insensitive) get COLOUR; first match wins; repeatable |\n| `--default-colour` | `#6366f1` | Colour of every other chapter |\n| `--sep` | `\" · \"` | Group separator in titles |\n| `--font`, `--font-bold`, `--mono` | macOS Helvetica, Menlo | TrueType fonts. In a `.ttc`, `--font-index` \u002F `--font-bold-index` pick the face (Helvetica: 0 regular, 1 bold) |\n| `--crf`, `--preset` | `30`, `4` | SVT-AV1 settings; `--preset 10` for quick previews |\n\nThe `--accent` values in the example are shoreline-recon's: grey title card,\nteal splats, amber meshes, with indigo processing steps from the default. Pick\ncolours that separate the chapter kinds of the video at hand.\n\nChapters, metadata and any audio are copied from the input. A file trimmed with\n`ffmpeg -t` keeps all its source's chapters; the bar ignores those past the end.\nOn a 30 s 1280x720 clip at `--preset 10` the pass took 2.3 s.\n\n## Checking the Result\n\n```bash\nffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 out.mp4\nffprobe -v error -show_chapters -of csv=p=0 out.mp4 | wc -l\n```\n\nHeight should be the input's plus `--bar`, and the chapter count unchanged. Look\nat a frame of the bar with `video-frame-review` (`--crop W:\u003Cbar>:0:\u003CH>`).\n","# Timeline Bar and Title Card\n\nTwo scripts for assembling a chaptered demo video. `title-card.sh` makes a\ntitle card and can crossfade it onto the front of a video, adding a chapter for\nit. `timeline_bar.py` then draws a bar under every frame showing where the\nviewer is among the chapters. Both were ported from shoreline-recon's bar\nscript and demo-video assembly, with its project-specific colours turned into\noptions.\n\n## When to Use This Skill\n\n| Use this skill when... | Use something else when... |\n|---|---|\n| A video has chapters and viewers should see them on screen | Writing the chapters into a YouTube description — `video-chapters-youtube` |\n| A demo needs a title card with its name and context | Muxing a song — `video-add-music`; the bar pass copies existing audio |\n\n## Order\n\nTitle card first, bar last. The card adds a `Title` chapter and shifts the rest,\nand the bar is drawn from the chapters it finds. Run the bar pass on the\nhighest-quality intermediate, since it re-encodes.\n\n## Title Card\n\n```bash\n\"${CLAUDE_SKILL_DIR}\u002Fscripts\u002Ftitle-card.sh\" titled.mp4 --title \"shoreline-recon v1\" \\\n  --subtitle \"Water-aware splats and meshes · Reposalmi pier, Helsinki\" \\\n  --detail \"Laajasalo side · Vartiosaari side\" --before joined.mp4 --crf 20\n```\n\n| Output | What you get |\n|---|---|\n| `card.png` | The card alone (`--size`, default 1920x1080) |\n| `card.mp4` | `--seconds` of the card fading in from and out to black over `--fade` |\n| `out.mp4 --before VIDEO` | The card, then VIDEO crossfaded in over `--fade`. VIDEO's chapters and audio shift by `seconds - fade`, and a `--chapter-title` chapter covers the card. Size and frame rate follow VIDEO |\n\nThe layout is an accent stripe (`--accent`, default teal `#14b8a6`) beside up to\nthree left-aligned lines, designed at 1920x1080 and scaled. The font is\n`$VIDEO_FONT` (default macOS Helvetica). The script checks the output's chapter\ncount (input + 1) and duration (input + offset) and prints `STATUS`.\n\n## Timeline Bar\n\n```bash\nuv run -q --no-project --with pillow==13.0.0 --with numpy==2.5.4 python -I \\\n  \"${CLAUDE_SKILL_DIR}\u002Fscripts\u002Ftimeline_bar.py\" titled.mp4 out.mp4 --bar 80 \\\n  --accent title=#78808c --accent splat=#14b8a6 --accent mesh=#f59e0b\n```\n\nThe bar has three rows:\n\n1. Group names (the text before `--sep` in chapter titles) over their spans.\n2. One unlabelled block per chapter, with a playhead and progress through the\n   current chapter.\n3. A caption naming the current chapter, the next one, and elapsed \u002F total time.\n\nNo text sits inside a block, so any number of chapters fits. The output is `--bar` px taller than the input.\n\n| Option | Default | Effect |\n|---|---|---|\n| `--bar` | `80` | Bar height (even). The layout is drawn for 80 and scales with it; use 80 at 1920 wide, 54 at 1280 |\n| `--accent KEY=COLOUR` | none | Chapters whose label contains KEY (case-insensitive) get COLOUR; first match wins; repeatable |\n| `--default-colour` | `#6366f1` | Colour of every other chapter |\n| `--sep` | `\" · \"` | Group separator in titles |\n| `--font`, `--font-bold`, `--mono` | macOS Helvetica, Menlo | TrueType fonts. In a `.ttc`, `--font-index` \u002F `--font-bold-index` pick the face (Helvetica: 0 regular, 1 bold) |\n| `--crf`, `--preset` | `30`, `4` | SVT-AV1 settings; `--preset 10` for quick previews |\n\nThe `--accent` values in the example are shoreline-recon's: grey title card,\nteal splats, amber meshes, with indigo processing steps from the default. Pick\ncolours that separate the chapter kinds of the video at hand.\n\nChapters, metadata and any audio are copied from the input. A file trimmed with\n`ffmpeg -t` keeps all its source's chapters; the bar ignores those past the end.\nOn a 30 s 1280x720 clip at `--preset 10` the pass took 2.3 s.\n\n## Checking the Result\n\n```bash\nffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 out.mp4\nffprobe -v error -show_chapters -of csv=p=0 out.mp4 | wc -l\n```\n\nHeight should be the input's plus `--bar`, and the chapter count unchanged. Look\nat a frame of the bar with `video-frame-review` (`--crop W:\u003Cbar>:0:\u003CH>`).\n",{"name":5,"created":45,"modified":45,"reviewed":45,"description":7,"allowed-tools":46},1793232000000,"Bash, Read","main","bdd0582f1a2ba53d21061835bfd72d45f2f954f4","video-plugin\u002Fskills\u002Fvideo-timeline-bar",6,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Flaurigates","Linux enthusiast, cloud engineer, neovim addict, electronics hobbyist.","2026-11-15 03:36:11",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add laurigates\u002Fclaude-plugins --skill video-timeline-bar",{"tool":61,"command":62},"bunx","bunx skills add laurigates\u002Fclaude-plugins --skill video-timeline-bar",{"tool":64,"command":65},"pnpm","pnpm dlx skills add laurigates\u002Fclaude-plugins --skill video-timeline-bar","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fvideo-plugin\u002Fskills\u002Fvideo-timeline-bar\u002FSKILL.md",true,[69,75],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"scripts\u002Ftimeline_bar.py","SCRIPT","脚本",12193,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fvideo-plugin\u002Fskills\u002Fvideo-timeline-bar\u002Fscripts\u002Ftimeline_bar.py",{"path":76,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":77,"sourceHtmlUrl":78},"scripts\u002Ftitle-card.sh",7567,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fvideo-plugin\u002Fskills\u002Fvideo-timeline-bar\u002Fscripts\u002Ftitle-card.sh",[80,103,124,140,163,191],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":87,"publishedAt":40},"01M70PFHMH9ADY0CRE6047Y4B2","kitty-show-image","Show the user an image with a note on what to judge, via a file send or a labelled kitty tab. Use when the user must see an image, or icat fails with no \u002Fdev\u002Ftty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-show-image\u002FSKILL.md",[86],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[88,89,90,91,92,93,94,95,96,97,32,38,30,98,99,100,101,102,39,31],"show","kitty show image","image","kitty","show image","ls","get","send","open","dev","file","text","with","xdg","via",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":40},"01M70PFEN18HKQ4RCQ1VPGMPTB","kitty-session-persistence","Snapshot and restore kitty terminal sessions on macOS. Use when surviving WindowServer hangs without losing tabs, configuring snapshots, or restoring after a force-reboot.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-session-persistence\u002FSKILL.md",[],[91,110,111,112,113,114,38,30,115,116,117,39,31,118,119,120,121,122,123,32],"kitty session persistence","session","persistence","false","snapshots","uname","reboot","terminal","write","edit","snapshot","macos","sessions","restore",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":40},"01M70PFC77XGXCVQ1543VGZHYR","kitty-remote-control","Safe kitty remote control from an agent — read panes with kitty @ ls\u002Fget-text, notify, and never mutate the live terminal unasked. Use when running inside kitty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-remote-control\u002FSKILL.md",[],[131,132,91,133,134,93,135,136,94,137,138,32,38,139,30,99,100,117,39,31],"kitty remote control","remote","control","remote control","running","never","panes","notify","query",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":40},"01M70P6WVMCT5JG4SACTM69AF9","docs-reference-check","Dangling doc-reference gate: flag markdown naming repo paths or relative links that no longer exist. Use when docs cite moved\u002Fdeleted files, or wiring a doc-drift lint.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fdocumentation-plugin\u002Fskills\u002Fdocs-reference-check\u002FSKILL.md",[],[147,148,149,150,151,152,153,154,155,156,32,38,30,157,98,158,159,160,161,162],"docs reference check","check","reference check","reference","docs","links","python3","repo","files","auto","drift","lint","wiring","chezmoi","references","cp",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":178,"publishedAt":40},"01M6C6NDE7DAQGNWSF22J5CJ0Z","youtube-upload","Upload a video to YouTube via the Data API v3 and edit its title, description, tags or thumbnail afterwards. Use when publishing or retitling a YouTube video.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-upload\u002FSKILL.md",[169,172,173],{"categoryNo":170,"categoryName":171,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":174,"categoryName":175,"taxonomyType":176,"taxonomyTypeDesc":177},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[179,180,181,25,153,182,31,183,119,184,185,186,32,30,98,187,188,38,189,190,37,102,39],"youtube upload","upload","youtube","run","uv run","publishing","data","uv","api","v3","tags","id",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":200,"publishedAt":40},"01M6C6NABWW1X58KJJM4F6GQMQ","youtube-studio-share","Share a private YouTube video with a whole Google Workspace organization by scripting YouTube Studio in the browser. Use when a video must be org-only.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-studio-share\u002FSKILL.md",[197],{"categoryNo":198,"categoryName":199,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[201,202,203,204,181,25,205,206,207,208,209,31,210,211,212,213,32,214,38,100,215,39],"youtube studio share","share","youtube studio","studio","browser","javascript","scripting","google workspace","workspace","tool","google","only","MCP","chrome","organization"]