[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XDTCB8EC0NMCFFJ2W856GV":3,"skill-same:01M6XDTCB8EC0NMCFFJ2W856GV":48},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":22,"linkOnly":23,"markdownContent":24,"markdownBody":25,"frontMatter":26,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":13,"repositoryHtmlUrl":30,"repositoryHomepageUrl":6,"ownerHtmlUrl":31,"ownerBlogUrl":6,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M6XDTCB8EC0NMCFFJ2W856GV","syzlang-ioctl-basics",null,"Syzkaller syzlang syntax basics for describing ioctl syscalls","Waaaalnut\u002Fskillsbench","Waaaalnut","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103995656?v=4","01M6XCS9K1V51EY3JMB7DGMX24","01M6XCS9Q4WPW88W62C55G1H44",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks-no-skills\u002Fsyzkaller-ppdev-syzlang\u002Fenvironment\u002Fskills\u002Fsyzlang-ioctl-basics\u002FSKILL.md",[],[18,19,20,21],"basics","syzlang ioctl basics","syntax","for","2026-11-10 10:12:30",false,"---\nname: syzlang-ioctl-basics\ndescription: Syzkaller syzlang syntax basics for describing ioctl syscalls\n---\n\n# Syzlang Ioctl Basics\n\nSyzkaller's description language (syzlang) describes syscalls for fuzzing.\nDescription files are located at `\u002Fopt\u002Fsyzkaller\u002Fsys\u002Flinux\u002F*.txt`.\n\n## Syscall Syntax\n\nBasic form:\n```\nsyscall_name(arg1 type1, arg2 type2, ...) return_type\n```\n\nSpecialized syscalls use `$` suffix:\n```\nsyscall$VARIANT(args...) return_type\n```\n\n## Common Type Patterns\n\n| Pattern | Meaning |\n|---------|---------|\n| `const[VALUE]` | Fixed constant value |\n| `flags[flag_set, type]` | Bitfield from flag set |\n| `ptr[direction, type]` | Pointer (in, out, inout) |\n| `intptr[min:max]` | Integer pointer with range |\n| `int8`, `int16`, `int32` | Fixed-size integers |\n| `int16be`, `int32be` | Big-endian integers |\n| `array[type]` | Variable-length array |\n| `array[type, count]` | Fixed-length array |\n\n## Ioctl Patterns\n\nFor ioctls with output:\n```\nioctl$CMD(fd fd_type, cmd const[CMD], arg ptr[out, int32])\n```\n\nFor ioctls with input:\n```\nioctl$CMD(fd fd_type, cmd const[CMD], arg ptr[in, struct_type])\n```\n\nFor simple value ioctls:\n```\nioctl$CMD(fd fd_type, cmd const[CMD], arg intptr[0:1])\n```\n\nFor ioctls using ifreq structure (from socket.txt):\n```\nioctl$CMD(fd fd_type, cmd const[CMD], arg ptr[in, ifreq_t[flags[flag_set, int16]]])\n```\n\n## Struct Definitions\n\nStructs must have typed fields:\n```\nstruct_name {\n    field1    type1\n    field2    type2\n}\n```\n\n## Flag Sets\n\nDefine reusable flag sets:\n```\nflag_set_name = FLAG1, FLAG2, FLAG3\n```\n\nThen use with `flags[flag_set_name, int16]`.\n\n## Resources\n\nFile descriptor resources:\n```\nresource resource_name[fd]\n```\n\n## Read\u002FWrite Syscalls\n\nFor specialized read\u002Fwrite:\n```\nread$suffix(fd fd_type, buf ptr[out, buffer_type], count len[buf])\nwrite$suffix(fd fd_type, buf ptr[in, buffer_type], count len[buf])\n```\n\n## Tips\n\n1. Check existing files for patterns (e.g., `sys\u002Flinux\u002Fsocket.txt`)\n2. Run `make descriptions` after edits to validate syntax\n3. Some constants only exist on certain architectures\n4. Use `ptr[in, ...]` for input, `ptr[out, ...]` for output\n","# Syzlang Ioctl Basics\n\nSyzkaller's description language (syzlang) describes syscalls for fuzzing.\nDescription files are located at `\u002Fopt\u002Fsyzkaller\u002Fsys\u002Flinux\u002F*.txt`.\n\n## Syscall Syntax\n\nBasic form:\n```\nsyscall_name(arg1 type1, arg2 type2, ...) return_type\n```\n\nSpecialized syscalls use `$` suffix:\n```\nsyscall$VARIANT(args...) return_type\n```\n\n## Common Type Patterns\n\n| Pattern | Meaning |\n|---------|---------|\n| `const[VALUE]` | Fixed constant value |\n| `flags[flag_set, type]` | Bitfield from flag set |\n| `ptr[direction, type]` | Pointer (in, out, inout) |\n| `intptr[min:max]` | Integer pointer with range |\n| `int8`, `int16`, `int32` | Fixed-size integers |\n| `int16be`, `int32be` | Big-endian integers |\n| `array[type]` | Variable-length array |\n| `array[type, count]` | Fixed-length array |\n\n## Ioctl Patterns\n\nFor ioctls with output:\n```\nioctl$CMD(fd fd_type, cmd const[CMD], arg ptr[out, int32])\n```\n\nFor ioctls with input:\n```\nioctl$CMD(fd fd_type, cmd const[CMD], arg ptr[in, struct_type])\n```\n\nFor simple value ioctls:\n```\nioctl$CMD(fd fd_type, cmd const[CMD], arg intptr[0:1])\n```\n\nFor ioctls using ifreq structure (from socket.txt):\n```\nioctl$CMD(fd fd_type, cmd const[CMD], arg ptr[in, ifreq_t[flags[flag_set, int16]]])\n```\n\n## Struct Definitions\n\nStructs must have typed fields:\n```\nstruct_name {\n    field1    type1\n    field2    type2\n}\n```\n\n## Flag Sets\n\nDefine reusable flag sets:\n```\nflag_set_name = FLAG1, FLAG2, FLAG3\n```\n\nThen use with `flags[flag_set_name, int16]`.\n\n## Resources\n\nFile descriptor resources:\n```\nresource resource_name[fd]\n```\n\n## Read\u002FWrite Syscalls\n\nFor specialized read\u002Fwrite:\n```\nread$suffix(fd fd_type, buf ptr[out, buffer_type], count len[buf])\nwrite$suffix(fd fd_type, buf ptr[in, buffer_type], count len[buf])\n```\n\n## Tips\n\n1. Check existing files for patterns (e.g., `sys\u002Flinux\u002Fsocket.txt`)\n2. Run `make descriptions` after edits to validate syntax\n3. Some constants only exist on certain architectures\n4. Use `ptr[in, ...]` for input, `ptr[out, ...]` for output\n",{"name":5,"description":7},"main","7eeb258ada72b7f58119b0e7a2c00ea89d9beedd","tasks-no-skills\u002Fsyzkaller-ppdev-syzlang\u002Fenvironment\u002Fskills\u002Fsyzlang-ioctl-basics","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench","https:\u002F\u002Fgithub.com\u002FWaaaalnut","student of Zhejiang University","2026-04-21 23:16:23",{"source":8,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add Waaaalnut\u002Fskillsbench --skill syzlang-ioctl-basics",{"tool":40,"command":41},"bunx","bunx skills add Waaaalnut\u002Fskillsbench --skill syzlang-ioctl-basics",{"tool":43,"command":44},"pnpm","pnpm dlx skills add Waaaalnut\u002Fskillsbench --skill syzlang-ioctl-basics","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks-no-skills\u002Fsyzkaller-ppdev-syzlang\u002Fenvironment\u002Fskills\u002Fsyzlang-ioctl-basics\u002FSKILL.md",true,[],[49,63,78,106,128,146],{"skillNo":50,"name":51,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":59,"publishedAt":22},"01M6XEWMJ6VY3ZC53MPDCPG3GH","data-reconciliation","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fxlsx-recover-data\u002Fenvironment\u002Fskills\u002Fdata-reconciliation\u002FSKILL.md",[54],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[60,61,62],"data reconciliation","reconciliation","data",{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":22},"01M6XEW8MNPMF1KRXV6ATGFRQF","speech-to-text","Transcribe video to timestamped text using Whisper tiny model (pre-installed).","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-tutorial-indexer\u002Fenvironment\u002Fskills\u002Fspeech-to-text\u002FSKILL.md",[],[70,71,72,73,74,75,76,77],"speech","text","speech to text","transcribe video","whisper","model","Video","transcribe",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":89,"publishedAt":22},"01M6XEW3FQZP0T1RKQQJFXVY9T","video-processor","Process videos by removing segments and concatenating remaining parts. Use when you need to remove detected pauses\u002Fopenings from videos, create highlight reels, or batch process segment removals using ffmpeg filter_complex.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fvideo-processor\u002FSKILL.md",[84],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[76,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105],"processor","video processor","batch","create","reels","when","parts","segments","process","videos","you","segment","filter","ffmpeg","use","remove",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":113,"publishedAt":22},"01M6XEVXJ5KZ0NTY3XZKRY4AS1","silence-detector","Detect initial silence segments in audio\u002Fvideo using energy-based analysis. Use when you need to find low-energy periods at the start of recordings (title slides, setup time, pre-roll silence).","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fsilence-detector\u002FSKILL.md",[112],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},[114,115,116,117,95,100,118,119,120,121,122,97,123,124,76,125,126,127,104],"detector","silence detector","title","slides","time","energy","at","recordings","detect","find","Audio","analysis","start","setup",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":22},"01M6XEVT3NGRN1FT7JPMAPXS6M","segment-combiner","Combine multiple segment detection results into a unified list. Use when you need to merge segments from different detectors, prepare removal lists for video processing, or consolidate detection outputs.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fsegment-combiner\u002FSKILL.md",[],[101,135,76,136,137,138,139,21,95,140,141,97,100,142,143,104,144,145],"segment combiner","detection","prepare","merge","video processing","outputs","combine","processing","consolidate","results","list",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":155,"publishedAt":22},"01M6XEVMPVASGS2KX86QK4FMT7","report-generator","Generate compression reports for video processing. Use when you need to create structured JSON reports with duration statistics, compression ratios, and segment details after video processing.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Freport-generator\u002FSKILL.md",[152],{"categoryNo":153,"categoryName":154,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000034","行政与办公人员",[156,157,158,101,95,21,100,159,142,160,161,162,104,139,163,76,164,165,93],"generator","report generator","report","with","statistics","structured","reports","json","compression","generate"]