[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XBMPZNVR98XHBKF2P1KBAR":3,"skill-same:01M6XBMPZNVR98XHBKF2P1KBAR":56},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":13,"repositoryHtmlUrl":33,"repositoryHomepageUrl":6,"ownerHtmlUrl":34,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":35,"install":36,"resources":49},"01M6XBMPZNVR98XHBKF2P1KBAR","ffmpeg-encoder-check",null,"Check FFmpeg encoder availability before video encoding to avoid library mismatches","UF-gzj\u002Fopenspace-claude-evolution","UF-gzj","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F272393507?v=4","01M6XBCZB755P01VVYGQWPYZY3","01M6XBCZFJA5AREA17WGETA3FW",0,"MIT","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fffmpeg-encoder-check\u002FSKILL.md",[],[18,19,20,21,22,23,24],"check","ffmpeg","ffmpeg encoder check","library","encoding","Video","availability","2026-11-10 10:12:30",false,"---\nname: ffmpeg-encoder-check\ndescription: Check FFmpeg encoder availability before video encoding to avoid library mismatches\n---\n\n# FFmpeg Encoder Availability Check\n\n## Purpose\n\nBefore writing video encoding scripts, always verify which H.264 encoders are available in your FFmpeg installation. This prevents failures from library version mismatches, particularly with libopenh264.\n\n## Instructions\n\n### Step 1: Probe Available Encoders\n\nRun the following command to check available H.264 encoders:\n\n```bash\nffmpeg -encoders 2>\u002Fdev\u002Fnull | grep h264\n```\n\nThis shows which H.264 encoders are compiled into your FFmpeg build.\n\n### Step 2: Interpret Results\n\nCommon encoder options you may see:\n\n| Encoder | Description | Recommendation |\n|---------|-------------|----------------|\n| `libx264` | Software H.264 encoder | **Preferred** - widely compatible |\n| `libopenh264` | OpenH264 software encoder | Use with caution - often has library version mismatches |\n| `h264_nvenc` | NVIDIA hardware encoder | Good if NVIDIA GPU available |\n| `h264_videotoolbox` | macOS hardware encoder | Good on macOS |\n| `h264_vaapi` | Intel VAAPI hardware encoder | Good on Linux with Intel GPU |\n| `h264_qsv` | Intel QuickSync encoder | Good on Windows\u002FLinux with Intel GPU |\n\n### Step 3: Choose Encoding Strategy\n\n**For same-resolution sources (no re-encoding needed):**\n\n```bash\n# Best option - pass-through without quality loss\nffmpeg -i input.mp4 -c:v copy -c:a copy output.mp4\n```\n\n**If libx264 is available:**\n\n```bash\n# Reliable software encoding\nffmpeg -i input.mp4 -c:v libx264 -preset medium -crf 23 -c:a aac output.mp4\n```\n\n**If only libopenh264 is available:**\n\n```bash\n# Use with caution - may have library issues\nffmpeg -i input.mp4 -c:v libopenh264 -c:a aac output.mp4\n```\n\n### Step 4: Validate Before Batch Processing\n\nAlways test your encoding command on a small sample file before processing multiple videos or long footage.\n\n## Best Practices\n\n1. **Default to `-c:v copy`** when source and target resolutions match - no quality loss, fastest processing\n2. **Prefer libx264** over libopenh264 for software encoding - more stable, better compatibility\n3. **Check encoder availability at script startup**, not during execution - fail fast with clear error\n4. **Cache encoder check results** if running multiple encoding operations in the same session\n5. **Provide fallback options** in automated scripts - try copy first, then libx264, then fail gracefully\n\n## Example Script Template\n\n```bash\n#!\u002Fbin\u002Fbash\n\n# Check available encoders at startup\nENCODERS=$(ffmpeg -encoders 2>\u002Fdev\u002Fnull | grep h264)\n\nif echo \"$ENCODERS\" | grep -q \"libx264\"; then\n    VIDEO_CODEC=\"libx264\"\n    echo \"Using libx264 encoder\"\nelif echo \"$ENCODERS\" | grep -q \"libopenh264\"; then\n    VIDEO_CODEC=\"libopenh264\"\n    echo \"Warning: Using libopenh264 (may have compatibility issues)\"\nelse\n    echo \"Error: No H.264 encoder available\"\n    echo \"Available encoders:\"\n    echo \"$ENCODERS\"\n    exit 1\nfi\n\n# For same-resolution sources, prefer copy\nif [ \"$SOURCE_RESOLUTION\" = \"$TARGET_RESOLUTION\" ]; then\n    VIDEO_CODEC=\"copy\"\n    echo \"Same resolution detected - using stream copy\"\nfi\n\n# Encode\nffmpeg -i \"$INPUT\" -c:v \"$VIDEO_CODEC\" -c:a aac \"$OUTPUT\"\n```\n\n## Common Errors to Avoid\n\n- **Do not assume libx264 is available** - FFmpeg builds vary by system\n- **Do not use libopenh264 without checking** - frequent library version mismatch errors\n- **Do not re-encode unnecessarily** - use `-c:v copy` when resolution matches\n- **Do not skip the encoder check** - always probe before writing encoding logic","# FFmpeg Encoder Availability Check\n\n## Purpose\n\nBefore writing video encoding scripts, always verify which H.264 encoders are available in your FFmpeg installation. This prevents failures from library version mismatches, particularly with libopenh264.\n\n## Instructions\n\n### Step 1: Probe Available Encoders\n\nRun the following command to check available H.264 encoders:\n\n```bash\nffmpeg -encoders 2>\u002Fdev\u002Fnull | grep h264\n```\n\nThis shows which H.264 encoders are compiled into your FFmpeg build.\n\n### Step 2: Interpret Results\n\nCommon encoder options you may see:\n\n| Encoder | Description | Recommendation |\n|---------|-------------|----------------|\n| `libx264` | Software H.264 encoder | **Preferred** - widely compatible |\n| `libopenh264` | OpenH264 software encoder | Use with caution - often has library version mismatches |\n| `h264_nvenc` | NVIDIA hardware encoder | Good if NVIDIA GPU available |\n| `h264_videotoolbox` | macOS hardware encoder | Good on macOS |\n| `h264_vaapi` | Intel VAAPI hardware encoder | Good on Linux with Intel GPU |\n| `h264_qsv` | Intel QuickSync encoder | Good on Windows\u002FLinux with Intel GPU |\n\n### Step 3: Choose Encoding Strategy\n\n**For same-resolution sources (no re-encoding needed):**\n\n```bash\n# Best option - pass-through without quality loss\nffmpeg -i input.mp4 -c:v copy -c:a copy output.mp4\n```\n\n**If libx264 is available:**\n\n```bash\n# Reliable software encoding\nffmpeg -i input.mp4 -c:v libx264 -preset medium -crf 23 -c:a aac output.mp4\n```\n\n**If only libopenh264 is available:**\n\n```bash\n# Use with caution - may have library issues\nffmpeg -i input.mp4 -c:v libopenh264 -c:a aac output.mp4\n```\n\n### Step 4: Validate Before Batch Processing\n\nAlways test your encoding command on a small sample file before processing multiple videos or long footage.\n\n## Best Practices\n\n1. **Default to `-c:v copy`** when source and target resolutions match - no quality loss, fastest processing\n2. **Prefer libx264** over libopenh264 for software encoding - more stable, better compatibility\n3. **Check encoder availability at script startup**, not during execution - fail fast with clear error\n4. **Cache encoder check results** if running multiple encoding operations in the same session\n5. **Provide fallback options** in automated scripts - try copy first, then libx264, then fail gracefully\n\n## Example Script Template\n\n```bash\n#!\u002Fbin\u002Fbash\n\n# Check available encoders at startup\nENCODERS=$(ffmpeg -encoders 2>\u002Fdev\u002Fnull | grep h264)\n\nif echo \"$ENCODERS\" | grep -q \"libx264\"; then\n    VIDEO_CODEC=\"libx264\"\n    echo \"Using libx264 encoder\"\nelif echo \"$ENCODERS\" | grep -q \"libopenh264\"; then\n    VIDEO_CODEC=\"libopenh264\"\n    echo \"Warning: Using libopenh264 (may have compatibility issues)\"\nelse\n    echo \"Error: No H.264 encoder available\"\n    echo \"Available encoders:\"\n    echo \"$ENCODERS\"\n    exit 1\nfi\n\n# For same-resolution sources, prefer copy\nif [ \"$SOURCE_RESOLUTION\" = \"$TARGET_RESOLUTION\" ]; then\n    VIDEO_CODEC=\"copy\"\n    echo \"Same resolution detected - using stream copy\"\nfi\n\n# Encode\nffmpeg -i \"$INPUT\" -c:v \"$VIDEO_CODEC\" -c:a aac \"$OUTPUT\"\n```\n\n## Common Errors to Avoid\n\n- **Do not assume libx264 is available** - FFmpeg builds vary by system\n- **Do not use libopenh264 without checking** - frequent library version mismatch errors\n- **Do not re-encode unnecessarily** - use `-c:v copy` when resolution matches\n- **Do not skip the encoder check** - always probe before writing encoding logic",{"name":5,"description":7},"main","0650921d63895de3997bc81f1ff1d0ac67032072","gdpval_bench\u002Fskills\u002Fffmpeg-encoder-check","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution","https:\u002F\u002Fgithub.com\u002FUF-gzj","2026-04-16 09:31:03",{"source":8,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add UF-gzj\u002Fopenspace-claude-evolution --skill ffmpeg-encoder-check",{"tool":42,"command":43},"bunx","bunx skills add UF-gzj\u002Fopenspace-claude-evolution --skill ffmpeg-encoder-check",{"tool":45,"command":46},"pnpm","pnpm dlx skills add UF-gzj\u002Fopenspace-claude-evolution --skill ffmpeg-encoder-check","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fffmpeg-encoder-check\u002FSKILL.md",true,[50],{"path":51,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":54,"sourceHtmlUrl":55},".skill_id","OTHER","其他",34,"https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fffmpeg-encoder-check\u002F.skill_id",[57,81,98,107,137,153],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":25},"01M6XCCXD3NCM2YKR3WNGBASPC","write-special-chars-ts-check","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, plus a reliable TypeScript type-checking step that filters output to only the newly-written files to avoid being misled by pre-existing errors.","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-ts-check\u002FSKILL.md",[],[18,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80],"write","write special chars ts check","typescript","filters","characters","Existing","type-checking","for","errors","script","output","type","files","only","template","file","python",{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":25},"01M6XCCT7E3J922Q345PBGSHPN","write-special-chars-readback","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, with mandatory post-write verification via read_file and cleanup of \u002Ftmp helper scripts.","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-readback\u002FSKILL.md",[],[88,89,64,79,90,80,91,92,93,94,95,78,96,97,68,71,73],"readback","write special chars readback","helper","post","via","scripts","cleanup","read","verification","with",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":25},"01M6XCCMQX1R8B6FECWB3P63T7","write-special-chars-heredoc","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) by using a Python heredoc script executed via shell.","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-heredoc\u002FSKILL.md",[],[105,64,68,106,73,92,78,79,80,71],"write special chars heredoc","shell",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":118,"publishedAt":25},"01M6XCCG41M994JJEX6VN52PEP","worldmonitor-reference","Curated architecture index of the WorldMonitor open-source dashboard. Reference for extracting patterns — vanilla TypeScript, Panel class hierarchy, service layer, CSS grid, API edge functions, refresh scheduler, and 60+ data source integrations.","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fworldmonitor-reference\u002FSKILL.md",[113],{"categoryNo":114,"categoryName":115,"taxonomyType":116,"taxonomyTypeDesc":117},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[119,120,121,122,123,66,124,125,126,127,128,71,129,130,131,132,133,134,135,136],"reference","worldmonitor","worldmonitor reference","architecture","dashboard","css","scheduler","layer","hierarchy","source","extracting","panel","patterns","edge functions","integrations","open","api","data",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":25},"01M6XCCCHWNKG2W4VH9E6A10HF","virtual-list","Implement efficient virtual scrolling for rendering large lists with DOM recycling, chunk-based rendering, and performance optimizations","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fvirtual-list\u002FSKILL.md",[],[144,145,146,147,71,148,97,149,150,151,152],"virtual list","list","virtual","chunk","dom","rendering","recycling","implement","performance",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":25},"01M6XCC7X8PKMR2DEW91XGHYSV","verify-directory-structure","Diagnose and resolve file access issues by first verifying the directory structure.","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fverify-directory-structure\u002FSKILL.md",[],[160,161,162,163,164,165,79,166,167,168],"directory","verify directory structure","structure","verify","access","first","issues","diagnose","file access"]