[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6K0DX0JY6FXJWK0HT5PA277":3,"skill-same:01M6K0DX0JY6FXJWK0HT5PA277":57},{"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":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":13,"repositoryHtmlUrl":40,"repositoryHomepageUrl":6,"ownerHtmlUrl":41,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":42,"install":43,"resources":56},"01M6K0DX0JY6FXJWK0HT5PA277","zig-system-calls",null,"Guides using bun.sys for system calls and file I\u002FO in Zig. Use when implementing file operations instead of std.fs or std.posix.","sigitpoerwo\u002Frepoworkspace_zahra","sigitpoerwo","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F260207224?v=4","01M6K000PB6NA0N6SQ7VFMEAFZ","01M6K000V4N0CEHNPPQA9TNQNX",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsigitpoerwo\u002Frepoworkspace_zahra\u002Fblob\u002Fmain\u002Fskills\u002F03-BELUM-DICOBA\u002Fdari-clawhub\u002Fzig-system-calls\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31],"system","zig","calls","zig system calls","file","fs","file operations","operations","use","bun","guides","posix","implementing","for","2026-11-10 10:12:30",false,"---\nname: zig-system-calls\ndescription: Guides using bun.sys for system calls and file I\u002FO in Zig. Use when implementing file operations instead of std.fs or std.posix.\n---\n\n# System Calls & File I\u002FO in Zig\n\nUse `bun.sys` instead of `std.fs` or `std.posix` for cross-platform syscalls with proper error handling.\n\n## bun.sys.File (Preferred)\n\nFor most file operations, use the `bun.sys.File` wrapper:\n\n```zig\nconst File = bun.sys.File;\n\nconst file = switch (File.open(path, bun.O.RDWR, 0o644)) {\n    .result => |f| f,\n    .err => |err| return .{ .err = err },\n};\ndefer file.close();\n\n\u002F\u002F Read\u002Fwrite\n_ = try file.read(buffer).unwrap();\n_ = try file.writeAll(data).unwrap();\n\n\u002F\u002F Get file info\nconst stat = try file.stat().unwrap();\nconst size = try file.getEndPos().unwrap();\n\n\u002F\u002F std.io compatible\nconst reader = file.reader();\nconst writer = file.writer();\n```\n\n### Complete Example\n\n```zig\nconst File = bun.sys.File;\n\npub fn writeFile(path: [:0]const u8, data: []const u8) File.WriteError!void {\n    const file = switch (File.open(path, bun.O.WRONLY | bun.O.CREAT | bun.O.TRUNC, 0o664)) {\n        .result => |f| f,\n        .err => |err| return err.toError(),\n    };\n    defer file.close();\n\n    _ = switch (file.writeAll(data)) {\n        .result => {},\n        .err => |err| return err.toError(),\n    };\n}\n```\n\n## Why bun.sys?\n\n| Aspect      | bun.sys                          | std.fs\u002Fstd.posix    |\n| ----------- | -------------------------------- | ------------------- |\n| Return Type | `Maybe(T)` with detailed Error   | Generic error union |\n| Windows     | Full support with libuv fallback | Limited\u002FPOSIX-only  |\n| Error Info  | errno, syscall tag, path, fd     | errno only          |\n| EINTR       | Automatic retry                  | Manual handling     |\n\n## Error Handling with Maybe(T)\n\n`bun.sys` functions return `Maybe(T)` - a tagged union:\n\n```zig\nconst sys = bun.sys;\n\n\u002F\u002F Pattern 1: Switch on result\u002Ferror\nswitch (sys.read(fd, buffer)) {\n    .result => |bytes_read| {\n        \u002F\u002F use bytes_read\n    },\n    .err => |err| {\n        \u002F\u002F err.errno, err.syscall, err.fd, err.path\n        if (err.getErrno() == .AGAIN) {\n            \u002F\u002F handle EAGAIN\n        }\n    },\n}\n\n\u002F\u002F Pattern 2: Unwrap with try (converts to Zig error)\nconst bytes = try sys.read(fd, buffer).unwrap();\n\n\u002F\u002F Pattern 3: Unwrap with default\nconst value = sys.stat(path).unwrapOr(default_stat);\n```\n\n## Low-Level File Operations\n\nOnly use these when `bun.sys.File` doesn't meet your needs.\n\n### Opening Files\n\n```zig\nconst sys = bun.sys;\n\n\u002F\u002F Use bun.O flags (cross-platform normalized)\nconst fd = switch (sys.open(path, bun.O.RDONLY, 0)) {\n    .result => |fd| fd,\n    .err => |err| return .{ .err = err },\n};\ndefer fd.close();\n\n\u002F\u002F Common flags\nbun.O.RDONLY, bun.O.WRONLY, bun.O.RDWR\nbun.O.CREAT, bun.O.TRUNC, bun.O.APPEND\nbun.O.NONBLOCK, bun.O.DIRECTORY\n```\n\n### Reading & Writing\n\n```zig\n\u002F\u002F Single read (may return less than buffer size)\nswitch (sys.read(fd, buffer)) {\n    .result => |n| { \u002F* n bytes read *\u002F },\n    .err => |err| { \u002F* handle error *\u002F },\n}\n\n\u002F\u002F Read until EOF or buffer full\nconst total = try sys.readAll(fd, buffer).unwrap();\n\n\u002F\u002F Position-based read\u002Fwrite\nsys.pread(fd, buffer, offset)\nsys.pwrite(fd, data, offset)\n\n\u002F\u002F Vector I\u002FO\nsys.readv(fd, iovecs)\nsys.writev(fd, iovecs)\n```\n\n### File Info\n\n```zig\nsys.stat(path)      \u002F\u002F Follow symlinks\nsys.lstat(path)     \u002F\u002F Don't follow symlinks\nsys.fstat(fd)       \u002F\u002F From file descriptor\nsys.fstatat(fd, path)\n\n\u002F\u002F Linux-only: faster selective stat\nsys.statx(path, &.{ .size, .mtime })\n```\n\n### Path Operations\n\n```zig\nsys.unlink(path)\nsys.unlinkat(dir_fd, path)\nsys.rename(from, to)\nsys.renameat(from_dir, from, to_dir, to)\nsys.readlink(path, buf)\nsys.readlinkat(fd, path, buf)\nsys.link(T, src, dest)\nsys.linkat(src_fd, src, dest_fd, dest)\nsys.symlink(target, dest)\nsys.symlinkat(target, dirfd, dest)\nsys.mkdir(path, mode)\nsys.mkdirat(dir_fd, path, mode)\nsys.rmdir(path)\n```\n\n### Permissions\n\n```zig\nsys.chmod(path, mode)\nsys.fchmod(fd, mode)\nsys.fchmodat(fd, path, mode, flags)\nsys.chown(path, uid, gid)\nsys.fchown(fd, uid, gid)\n```\n\n### Closing File Descriptors\n\nClose is on `bun.FD`:\n\n```zig\nfd.close();  \u002F\u002F Asserts on error (use in defer)\n\n\u002F\u002F Or if you need error info:\nif (fd.closeAllowingBadFileDescriptor(null)) |err| {\n    \u002F\u002F handle error\n}\n```\n\n## Directory Operations\n\n```zig\nvar buf: bun.PathBuffer = undefined;\nconst cwd = try sys.getcwd(&buf).unwrap();\nconst cwdZ = try sys.getcwdZ(&buf).unwrap();  \u002F\u002F Zero-terminated\nsys.chdir(path, destination)\n```\n\n### Directory Iteration\n\nUse `bun.DirIterator` instead of `std.fs.Dir.Iterator`:\n\n```zig\nvar iter = bun.iterateDir(dir_fd);\nwhile (true) {\n    switch (iter.next()) {\n        .result => |entry| {\n            if (entry) |e| {\n                const name = e.name.slice();\n                const kind = e.kind;  \u002F\u002F .file, .directory, .sym_link, etc.\n            } else {\n                break;  \u002F\u002F End of directory\n            }\n        },\n        .err => |err| return .{ .err = err },\n    }\n}\n```\n\n## Socket Operations\n\n**Important**: `bun.sys` has limited socket support. For network I\u002FO:\n\n- **Non-blocking sockets**: Use `uws.Socket` (libuwebsockets) exclusively\n- **Pipes\u002Fblocking I\u002FO**: Use `PipeReader.zig` and `PipeWriter.zig`\n\nAvailable in bun.sys:\n\n```zig\nsys.setsockopt(fd, level, optname, value)\nsys.socketpair(domain, socktype, protocol, nonblocking_status)\n```\n\nDo NOT use `bun.sys` for socket read\u002Fwrite - use `uws.Socket` instead.\n\n## Other Operations\n\n```zig\nsys.ftruncate(fd, size)\nsys.lseek(fd, offset, whence)\nsys.dup(fd)\nsys.dupWithFlags(fd, flags)\nsys.fcntl(fd, cmd, arg)\nsys.pipe()\nsys.mmap(...)\nsys.munmap(memory)\nsys.access(path, mode)\nsys.futimens(fd, atime, mtime)\nsys.utimens(path, atime, mtime)\n```\n\n## Error Type\n\n```zig\nconst err: bun.sys.Error = ...;\nerr.errno      \u002F\u002F Raw errno value\nerr.getErrno() \u002F\u002F As std.posix.E enum\nerr.syscall    \u002F\u002F Which syscall failed (Tag enum)\nerr.fd         \u002F\u002F Optional: file descriptor\nerr.path       \u002F\u002F Optional: path string\n```\n\n## Key Points\n\n- Prefer `bun.sys.File` wrapper for most file operations\n- Use low-level `bun.sys` functions only when needed\n- Use `bun.O.*` flags instead of `std.os.O.*`\n- Handle `Maybe(T)` with switch or `.unwrap()`\n- Use `defer fd.close()` for cleanup\n- EINTR is handled automatically in most functions\n- For sockets, use `uws.Socket` not `bun.sys`\n","# System Calls & File I\u002FO in Zig\n\nUse `bun.sys` instead of `std.fs` or `std.posix` for cross-platform syscalls with proper error handling.\n\n## bun.sys.File (Preferred)\n\nFor most file operations, use the `bun.sys.File` wrapper:\n\n```zig\nconst File = bun.sys.File;\n\nconst file = switch (File.open(path, bun.O.RDWR, 0o644)) {\n    .result => |f| f,\n    .err => |err| return .{ .err = err },\n};\ndefer file.close();\n\n\u002F\u002F Read\u002Fwrite\n_ = try file.read(buffer).unwrap();\n_ = try file.writeAll(data).unwrap();\n\n\u002F\u002F Get file info\nconst stat = try file.stat().unwrap();\nconst size = try file.getEndPos().unwrap();\n\n\u002F\u002F std.io compatible\nconst reader = file.reader();\nconst writer = file.writer();\n```\n\n### Complete Example\n\n```zig\nconst File = bun.sys.File;\n\npub fn writeFile(path: [:0]const u8, data: []const u8) File.WriteError!void {\n    const file = switch (File.open(path, bun.O.WRONLY | bun.O.CREAT | bun.O.TRUNC, 0o664)) {\n        .result => |f| f,\n        .err => |err| return err.toError(),\n    };\n    defer file.close();\n\n    _ = switch (file.writeAll(data)) {\n        .result => {},\n        .err => |err| return err.toError(),\n    };\n}\n```\n\n## Why bun.sys?\n\n| Aspect      | bun.sys                          | std.fs\u002Fstd.posix    |\n| ----------- | -------------------------------- | ------------------- |\n| Return Type | `Maybe(T)` with detailed Error   | Generic error union |\n| Windows     | Full support with libuv fallback | Limited\u002FPOSIX-only  |\n| Error Info  | errno, syscall tag, path, fd     | errno only          |\n| EINTR       | Automatic retry                  | Manual handling     |\n\n## Error Handling with Maybe(T)\n\n`bun.sys` functions return `Maybe(T)` - a tagged union:\n\n```zig\nconst sys = bun.sys;\n\n\u002F\u002F Pattern 1: Switch on result\u002Ferror\nswitch (sys.read(fd, buffer)) {\n    .result => |bytes_read| {\n        \u002F\u002F use bytes_read\n    },\n    .err => |err| {\n        \u002F\u002F err.errno, err.syscall, err.fd, err.path\n        if (err.getErrno() == .AGAIN) {\n            \u002F\u002F handle EAGAIN\n        }\n    },\n}\n\n\u002F\u002F Pattern 2: Unwrap with try (converts to Zig error)\nconst bytes = try sys.read(fd, buffer).unwrap();\n\n\u002F\u002F Pattern 3: Unwrap with default\nconst value = sys.stat(path).unwrapOr(default_stat);\n```\n\n## Low-Level File Operations\n\nOnly use these when `bun.sys.File` doesn't meet your needs.\n\n### Opening Files\n\n```zig\nconst sys = bun.sys;\n\n\u002F\u002F Use bun.O flags (cross-platform normalized)\nconst fd = switch (sys.open(path, bun.O.RDONLY, 0)) {\n    .result => |fd| fd,\n    .err => |err| return .{ .err = err },\n};\ndefer fd.close();\n\n\u002F\u002F Common flags\nbun.O.RDONLY, bun.O.WRONLY, bun.O.RDWR\nbun.O.CREAT, bun.O.TRUNC, bun.O.APPEND\nbun.O.NONBLOCK, bun.O.DIRECTORY\n```\n\n### Reading & Writing\n\n```zig\n\u002F\u002F Single read (may return less than buffer size)\nswitch (sys.read(fd, buffer)) {\n    .result => |n| { \u002F* n bytes read *\u002F },\n    .err => |err| { \u002F* handle error *\u002F },\n}\n\n\u002F\u002F Read until EOF or buffer full\nconst total = try sys.readAll(fd, buffer).unwrap();\n\n\u002F\u002F Position-based read\u002Fwrite\nsys.pread(fd, buffer, offset)\nsys.pwrite(fd, data, offset)\n\n\u002F\u002F Vector I\u002FO\nsys.readv(fd, iovecs)\nsys.writev(fd, iovecs)\n```\n\n### File Info\n\n```zig\nsys.stat(path)      \u002F\u002F Follow symlinks\nsys.lstat(path)     \u002F\u002F Don't follow symlinks\nsys.fstat(fd)       \u002F\u002F From file descriptor\nsys.fstatat(fd, path)\n\n\u002F\u002F Linux-only: faster selective stat\nsys.statx(path, &.{ .size, .mtime })\n```\n\n### Path Operations\n\n```zig\nsys.unlink(path)\nsys.unlinkat(dir_fd, path)\nsys.rename(from, to)\nsys.renameat(from_dir, from, to_dir, to)\nsys.readlink(path, buf)\nsys.readlinkat(fd, path, buf)\nsys.link(T, src, dest)\nsys.linkat(src_fd, src, dest_fd, dest)\nsys.symlink(target, dest)\nsys.symlinkat(target, dirfd, dest)\nsys.mkdir(path, mode)\nsys.mkdirat(dir_fd, path, mode)\nsys.rmdir(path)\n```\n\n### Permissions\n\n```zig\nsys.chmod(path, mode)\nsys.fchmod(fd, mode)\nsys.fchmodat(fd, path, mode, flags)\nsys.chown(path, uid, gid)\nsys.fchown(fd, uid, gid)\n```\n\n### Closing File Descriptors\n\nClose is on `bun.FD`:\n\n```zig\nfd.close();  \u002F\u002F Asserts on error (use in defer)\n\n\u002F\u002F Or if you need error info:\nif (fd.closeAllowingBadFileDescriptor(null)) |err| {\n    \u002F\u002F handle error\n}\n```\n\n## Directory Operations\n\n```zig\nvar buf: bun.PathBuffer = undefined;\nconst cwd = try sys.getcwd(&buf).unwrap();\nconst cwdZ = try sys.getcwdZ(&buf).unwrap();  \u002F\u002F Zero-terminated\nsys.chdir(path, destination)\n```\n\n### Directory Iteration\n\nUse `bun.DirIterator` instead of `std.fs.Dir.Iterator`:\n\n```zig\nvar iter = bun.iterateDir(dir_fd);\nwhile (true) {\n    switch (iter.next()) {\n        .result => |entry| {\n            if (entry) |e| {\n                const name = e.name.slice();\n                const kind = e.kind;  \u002F\u002F .file, .directory, .sym_link, etc.\n            } else {\n                break;  \u002F\u002F End of directory\n            }\n        },\n        .err => |err| return .{ .err = err },\n    }\n}\n```\n\n## Socket Operations\n\n**Important**: `bun.sys` has limited socket support. For network I\u002FO:\n\n- **Non-blocking sockets**: Use `uws.Socket` (libuwebsockets) exclusively\n- **Pipes\u002Fblocking I\u002FO**: Use `PipeReader.zig` and `PipeWriter.zig`\n\nAvailable in bun.sys:\n\n```zig\nsys.setsockopt(fd, level, optname, value)\nsys.socketpair(domain, socktype, protocol, nonblocking_status)\n```\n\nDo NOT use `bun.sys` for socket read\u002Fwrite - use `uws.Socket` instead.\n\n## Other Operations\n\n```zig\nsys.ftruncate(fd, size)\nsys.lseek(fd, offset, whence)\nsys.dup(fd)\nsys.dupWithFlags(fd, flags)\nsys.fcntl(fd, cmd, arg)\nsys.pipe()\nsys.mmap(...)\nsys.munmap(memory)\nsys.access(path, mode)\nsys.futimens(fd, atime, mtime)\nsys.utimens(path, atime, mtime)\n```\n\n## Error Type\n\n```zig\nconst err: bun.sys.Error = ...;\nerr.errno      \u002F\u002F Raw errno value\nerr.getErrno() \u002F\u002F As std.posix.E enum\nerr.syscall    \u002F\u002F Which syscall failed (Tag enum)\nerr.fd         \u002F\u002F Optional: file descriptor\nerr.path       \u002F\u002F Optional: path string\n```\n\n## Key Points\n\n- Prefer `bun.sys.File` wrapper for most file operations\n- Use low-level `bun.sys` functions only when needed\n- Use `bun.O.*` flags instead of `std.os.O.*`\n- Handle `Maybe(T)` with switch or `.unwrap()`\n- Use `defer fd.close()` for cleanup\n- EINTR is handled automatically in most functions\n- For sockets, use `uws.Socket` not `bun.sys`\n",{"name":5,"description":7},"main","000d804ba753926ec0eca35be68bdb42da72c672","skills\u002F03-BELUM-DICOBA\u002Fdari-clawhub\u002Fzig-system-calls","https:\u002F\u002Fgithub.com\u002Fsigitpoerwo\u002Frepoworkspace_zahra","https:\u002F\u002Fgithub.com\u002Fsigitpoerwo","2026-04-05 09:27:05",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add sigitpoerwo\u002Frepoworkspace_zahra --skill zig-system-calls",{"tool":49,"command":50},"bunx","bunx skills add sigitpoerwo\u002Frepoworkspace_zahra --skill zig-system-calls",{"tool":52,"command":53},"pnpm","pnpm dlx skills add sigitpoerwo\u002Frepoworkspace_zahra --skill zig-system-calls","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsigitpoerwo\u002Frepoworkspace_zahra\u002Fblob\u002Fmain\u002Fskills\u002F03-BELUM-DICOBA\u002Fdari-clawhub\u002Fzig-system-calls\u002FSKILL.md",true,[],[58,101,126,143,154,160],{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":80,"publishedAt":32},"01M6K0FJ41XMDT72PK0E3ZJF9P","zahra-workspace-manager","Comprehensive workspace management skill for Zahra Maurita's development environment. Use when managing projects across 8 divisions (Web, App, AI Agent, Bot, Content, Marketing, Research, Business), organizing files, tracking progress, managing memory, or coordinating multi-domain work. Triggers on mentions of workspace organization, project management, division-specific tasks, memory updates, or cross-domain coordination.","https:\u002F\u002Fgithub.com\u002Fsigitpoerwo\u002Frepoworkspace_zahra\u002Fblob\u002Fmain\u002Fskills\u002Fzahra-workspace-manager\u002FSKILL.md",[64,69,72,75],{"categoryNo":65,"categoryName":66,"taxonomyType":67,"taxonomyTypeDesc":68},"01JBSEEDCAT000000000000019","营销推广","SCENARIO","使用场景",{"categoryNo":70,"categoryName":71,"taxonomyType":67,"taxonomyTypeDesc":68},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":73,"categoryName":74,"taxonomyType":67,"taxonomyTypeDesc":68},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000035","市场营销","PROFESSION","适用职业",[81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100],"workspace","workspace manager","manager","zahra workspace manager","work","updates","progress","app","project","across","multi-domain","files","command","coordination","projects","search","tasks","ai agent","memory","bot",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":108,"publishedAt":32},"01M6K0FBZYXG5M8VBW5R6TPKEP","tinyfish","AI-powered web automation using TinyFish Web Agent. Use when you need to scrape data from websites, automate form filling, extract structured information, or perform any web-based task using natural language instructions. Works with any website including those with JavaScript, dynamic content, and bot protection.","https:\u002F\u002Fgithub.com\u002Fsigitpoerwo\u002Frepoworkspace_zahra\u002Fblob\u002Fmain\u002Fskills\u002F05-CUSTOM-SKILLS\u002Ftinyfish\u002FSKILL.md",[107],{"categoryNo":73,"categoryName":74,"taxonomyType":67,"taxonomyTypeDesc":68},[103,109,110,111,112,113,114,115,116,117,26,118,119,100,120,121,122,123,124,125],"with","natural language","web automation","form","information","scrape","task","language","protection","instructions","automate","you","website","web","javascript","automation","data",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":133,"publishedAt":32},"01M6K0F57WDT62QNXTTC6YS34D","tinyfish-openclaw","TinyFish Web Agent integration for OpenClaw. Use this skill to scrape websites, automate web tasks, extract structured data, and perform browser automation using natural language. Works seamlessly with OpenClaw's MCP protocol.","https:\u002F\u002Fgithub.com\u002Fsigitpoerwo\u002Frepoworkspace_zahra\u002Fblob\u002Fmain\u002Fskills\u002F05-CUSTOM-SKILLS\u002Ftinyfish-openclaw\u002FSKILL.md",[132],{"categoryNo":73,"categoryName":74,"taxonomyType":67,"taxonomyTypeDesc":68},[103,134,135,124,136,137,138,122,119,31,109,110,26,114,125,139,140,141,142,97],"openclaw","tinyfish openclaw","structured data","browser automation","MCP","integration","mcp protocol","browser","protocol",{"skillNo":144,"name":145,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":153,"publishedAt":32},"01M6K0E9ZWFTG44SK6G2ARS39Z","autoresearchclaw","https:\u002F\u002Fgithub.com\u002Fsigitpoerwo\u002Frepoworkspace_zahra\u002Fblob\u002Fmain\u002Fskills\u002F05-CUSTOM-SKILLS\u002Fautoresearchclaw\u002FSKILL.md",[148,151,152],{"categoryNo":149,"categoryName":150,"taxonomyType":67,"taxonomyTypeDesc":68},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":70,"categoryName":71,"taxonomyType":67,"taxonomyTypeDesc":68},{"categoryNo":73,"categoryName":74,"taxonomyType":67,"taxonomyTypeDesc":68},[145],{"skillNo":155,"name":156,"nameZh":6,"description":6,"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":32},"01M6K0E6ZAEJFYDXM4GANCKZY0","researchclaw","https:\u002F\u002Fgithub.com\u002Fsigitpoerwo\u002Frepoworkspace_zahra\u002Fblob\u002Fmain\u002Fskills\u002F05-CUSTOM-SKILLS\u002Fautoresearchclaw\u002F.claude\u002Fskills\u002Fresearchclaw\u002FSKILL.md",[],[156],{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":167,"publishedAt":32},"01M6K0E1B6RZ8T2S7RMWQ6BVWW","academic-research-assistant","Research assistant for management & digital business academics - literature review, paper analysis, citation management, research methodology","https:\u002F\u002Fgithub.com\u002Fsigitpoerwo\u002Frepoworkspace_zahra\u002Fblob\u002Fmain\u002Fskills\u002F05-CUSTOM-SKILLS\u002Facademic-research-assistant\u002FSKILL.md",[166],{"categoryNo":70,"categoryName":71,"taxonomyType":67,"taxonomyTypeDesc":68},[168,169,170,171,172,173,31,174,175,176,177,178,179,180,181,182,183,184],"research assistant","academic research assistant","Academic","assistant","research","paper analysis","literature","paper","Citation","research methodology","business","management","literature review","analysis","citation management","methodology","review"]