[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DD8TMN277T5P9N0PVAS2MW":3,"skill-same:01M6DD8TMN277T5P9N0PVAS2MW":69},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":14,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M6DD8TMN277T5P9N0PVAS2MW","caption-burn",null,"Use when BURNING captions \u002F subtitles \u002F karaoke INTO a video as hardcoded pixels (hardsub) via libass through ffmpeg, OR soft-muxing them as a selectable, removable subtitle track. Covers ASS document generation sized to the export canvas, libass styling (font \u002F size \u002F colour \u002F outline \u002F box), the OpusClip word-by-word KARAOKE preset (per-word alternating yellow\u002Fgreen + scale-pop), hook-title \u002F hook-card overlays, the CaptionOverride tuning patch, safe-area placement for 9:16, and the Netflix CPS\u002FCPL\u002Fmin-gap polish pass. Burn = lossy re-encode, permanent, styling survives anywhere; soft-mux = lossless stream-copy, toggleable, but loses ASS styling in MP4 (mov_text). NOT for moving\u002Fanimated watermark removal (use video-watermark-removal), NOT for transcription\u002Fcue generation (this consumes an existing cue list), NOT for repositioning an already-burned track (burned pixels are permanent — re-burn from source). Source of truth: media_studio\u002Ffeatures\u002Fcaption.py, caption_karaoke.py, caption_override.py, caption_polish.py, tracks.py.","Prekzursil\u002Fagent-skills-toolchain","Prekzursil","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54636077?v=4","01M6DACZ1PCQHD99SCR1YXG28B","Andrei Mihai Visalon","01M6DACZ670WZF535V3WYYSS4Z",0,"MIT","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Fplatform\u002Frouting\u002Ffixtures\u002Fhome\u002F.claude\u002Fskills\u002Fcaption-burn\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"caption burn","burn","patch","gap","cue","as","ffmpeg","generation","green","document","canvas","use","text","Word","mp4","Captions","Media","Video","subtitles","preset","2026-11-10 10:12:30",false,"---\nname: caption-burn\ndescription: \"Use when BURNING captions \u002F subtitles \u002F karaoke INTO a video as hardcoded pixels (hardsub) via libass through ffmpeg, OR soft-muxing them as a selectable, removable subtitle track. Covers ASS document generation sized to the export canvas, libass styling (font \u002F size \u002F colour \u002F outline \u002F box), the OpusClip word-by-word KARAOKE preset (per-word alternating yellow\u002Fgreen + scale-pop), hook-title \u002F hook-card overlays, the CaptionOverride tuning patch, safe-area placement for 9:16, and the Netflix CPS\u002FCPL\u002Fmin-gap polish pass. Burn = lossy re-encode, permanent, styling survives anywhere; soft-mux = lossless stream-copy, toggleable, but loses ASS styling in MP4 (mov_text). NOT for moving\u002Fanimated watermark removal (use video-watermark-removal), NOT for transcription\u002Fcue generation (this consumes an existing cue list), NOT for repositioning an already-burned track (burned pixels are permanent — re-burn from source). Source of truth: media_studio\u002Ffeatures\u002Fcaption.py, caption_karaoke.py, caption_override.py, caption_polish.py, tracks.py.\"\n---\n\n# Caption Burn (hardsub) & Soft-mux — libass \u002F ffmpeg\n\nRender an existing **cue list** onto a video, either **burned in** (hardcoded pixels, permanent, re-encode) or **soft-muxed** (a selectable, removable subtitle stream, stream-copy). This is the libass\u002FASS path; the styled\u002Fkaraoke output path is libass burn (mov_text cannot carry the styling).\n\nSource modules read (cite these, do not invent commands):\n- `media_studio\u002Ffeatures\u002Fcaption.py` — `CaptionEngine`, `build_ass`, escaping, `build_burn_argv`\u002F`build_softmux_argv`, hook title\u002Fcard, karaoke routing.\n- `media_studio\u002Ffeatures\u002Fcaption_karaoke.py` — OpusClip word-by-word karaoke ASS preset.\n- `media_studio\u002Ffeatures\u002Fcaption_override.py` — `CaptionOverride` -> `ResolvedCaptionStyle`, the ASS colour byte-swap.\n- `media_studio\u002Ffeatures\u002Fcaption_polish.py` — Netflix CPS\u002FCPL\u002Fmin-gap + punct\u002Fcasing\u002Femphasis\u002Fprofanity polish.\n- `media_studio\u002Ffeatures\u002Ftracks.py` — `tracks.burn` \u002F `soft_mux` \u002F `strip` RPC + the simpler V1 ASS builder.\n- `media_studio\u002Fffmpeg.py` — the shared `run()` (argv-only, stderr-drain) and `ffmpeg_path()`.\n\n## When to use \u002F when NOT\n- USE for: painting transcript cues into a clip (standard captions, styled captions, OpusClip karaoke), adding a hook-title\u002Fhook-card headline, or muxing a removable subtitle track.\n- DO NOT use for: removing a logo\u002Fwatermark (`video-watermark-removal`); generating the cues themselves (this skill consumes `{index,start,end,text}` cues already produced upstream); moving a caption that is already burned in (pixels are baked — change the position\u002Fstyle and re-burn from the original source); soft-muxing styled ASS into an MP4 and expecting the styling to survive (MP4 only carries `mov_text`, which drops ASS overrides — burn instead).\n\n### Burn vs soft-mux — the tradeoff (decide first)\n### Recipe (the real flow, from `CaptionEngine.render`)\n### Exact ffmpeg argv — BURN (`caption.build_burn_argv`)\n### Exact ffmpeg argv — SOFT-MUX (`caption.build_softmux_argv`)\n### STRIP a soft sub (`tracks.build_strip_argv`)\n### ASS document structure (`build_ass`)\n### libass styling fields you actually touch (`CaptionOverride` -> `ResolvedCaptionStyle`)\n### ASS colour format — the silent-wrong-colour trap (`hex_to_ass_color`)\n### Karaoke preset (`caption_karaoke.build_karaoke_ass`, style id `opusclip-karaoke`)\n### Caption polish (`caption_polish.polish_cues`) — run BEFORE building the ASS\n### Pitfalls that actually bite\n### GPU \u002F model notes\n","# Caption Burn (hardsub) & Soft-mux — libass \u002F ffmpeg\n\nRender an existing **cue list** onto a video, either **burned in** (hardcoded pixels, permanent, re-encode) or **soft-muxed** (a selectable, removable subtitle stream, stream-copy). This is the libass\u002FASS path; the styled\u002Fkaraoke output path is libass burn (mov_text cannot carry the styling).\n\nSource modules read (cite these, do not invent commands):\n- `media_studio\u002Ffeatures\u002Fcaption.py` — `CaptionEngine`, `build_ass`, escaping, `build_burn_argv`\u002F`build_softmux_argv`, hook title\u002Fcard, karaoke routing.\n- `media_studio\u002Ffeatures\u002Fcaption_karaoke.py` — OpusClip word-by-word karaoke ASS preset.\n- `media_studio\u002Ffeatures\u002Fcaption_override.py` — `CaptionOverride` -> `ResolvedCaptionStyle`, the ASS colour byte-swap.\n- `media_studio\u002Ffeatures\u002Fcaption_polish.py` — Netflix CPS\u002FCPL\u002Fmin-gap + punct\u002Fcasing\u002Femphasis\u002Fprofanity polish.\n- `media_studio\u002Ffeatures\u002Ftracks.py` — `tracks.burn` \u002F `soft_mux` \u002F `strip` RPC + the simpler V1 ASS builder.\n- `media_studio\u002Fffmpeg.py` — the shared `run()` (argv-only, stderr-drain) and `ffmpeg_path()`.\n\n## When to use \u002F when NOT\n- USE for: painting transcript cues into a clip (standard captions, styled captions, OpusClip karaoke), adding a hook-title\u002Fhook-card headline, or muxing a removable subtitle track.\n- DO NOT use for: removing a logo\u002Fwatermark (`video-watermark-removal`); generating the cues themselves (this skill consumes `{index,start,end,text}` cues already produced upstream); moving a caption that is already burned in (pixels are baked — change the position\u002Fstyle and re-burn from the original source); soft-muxing styled ASS into an MP4 and expecting the styling to survive (MP4 only carries `mov_text`, which drops ASS overrides — burn instead).\n\n### Burn vs soft-mux — the tradeoff (decide first)\n### Recipe (the real flow, from `CaptionEngine.render`)\n### Exact ffmpeg argv — BURN (`caption.build_burn_argv`)\n### Exact ffmpeg argv — SOFT-MUX (`caption.build_softmux_argv`)\n### STRIP a soft sub (`tracks.build_strip_argv`)\n### ASS document structure (`build_ass`)\n### libass styling fields you actually touch (`CaptionOverride` -> `ResolvedCaptionStyle`)\n### ASS colour format — the silent-wrong-colour trap (`hex_to_ass_color`)\n### Karaoke preset (`caption_karaoke.build_karaoke_ass`, style id `opusclip-karaoke`)\n### Caption polish (`caption_polish.polish_cues`) — run BEFORE building the ASS\n### Pitfalls that actually bite\n### GPU \u002F model notes\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5","platform\u002Frouting\u002Ffixtures\u002Fhome\u002F.claude\u002Fskills\u002Fcaption-burn","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill caption-burn",{"tool":61,"command":62},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill caption-burn",{"tool":64,"command":65},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill caption-burn","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Fplatform\u002Frouting\u002Ffixtures\u002Fhome\u002F.claude\u002Fskills\u002Fcaption-burn\u002FSKILL.md",true,[],[70,91,120,147,161,177],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":44},"01M6DF7D7478R55P46REYH4QAC","clarify-requirements","Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fworkspace-hooks\u002Fskills\u002Fclarify-requirements\u002FSKILL.md",[],[77,78,79,80,81,82,83,84,85,35,86,87,88,89,90],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","context","repo","injection","execution","file",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":100,"publishedAt":44},"01M6DF79CA4BHJS66J8EZDBPWJ","openmm-md","Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein \u002F protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fmcp\u002Fopenmm-md-mcp\u002Fskill\u002Fopenmm-md\u002FSKILL.md",[97],{"categoryNo":98,"categoryName":99,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[101,102,103,104,105,106,107,108,109,110,111,112,113,114,35,115,116,117,118,119],"openmm md","how","decision","pick","linux","analyze","tool","stack","open","NVIDIA","gpu","license","workflow","windows","free","molecular dynamics","local","do","MCP",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":132,"publishedAt":44},"01M6DF76C1MG85VEWP8VZCBNMN","visual-review","Take screenshots of web pages and UI using Playwright for visual review and iteration","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fvisual-review\u002FSKILL.md",[126,129],{"categoryNo":127,"categoryName":128,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":130,"categoryName":131,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[133,134,135,136,137,138,139,140,141,142,102,143,144,145,146],"review","visual","visual review","pages","web","false","iteration","take","check","slides","ui","screenshot","playwright","screenshots",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":153,"publishedAt":44},"01M6DF73AQVCBZKEN0YXEX9FXP","status","Diagnostic status report — shows metaswarm installation state, project setup, and potential issues","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstatus\u002FSKILL.md",[],[149,154,155,156,157,158,159,160],"setup","report","project","installation","project setup","issues","state",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":168,"publishedAt":44},"01M6DF6X6C2XB0P6GX76P7TTYV","start","Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstart\u002FSKILL.md",[167],{"categoryNo":98,"categoryName":99,"taxonomyType":21,"taxonomyTypeDesc":22},[163,169,82,170,171,172,35,173,174,175,176],"start issue","issue","ready","work on issue","user","work","work on","development",{"skillNo":178,"name":154,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":180,"categories":181,"keywords":182,"publishedAt":44},"01M6DF6QMJ9AJKFKHHKRT005PQ","Interactive project setup — detects your project, configures metaswarm, writes project-local files","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",[],[154,156,117,183,158,184],"files","interactive"]