[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CEAM7JHNP1SJPR2GW2XVCP":3,"skill-same:01M6CEAM7JHNP1SJPR2GW2XVCP":67},{"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":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M6CEAM7JHNP1SJPR2GW2XVCP","review-pr",null,"Review-only GitHub pull request analysis with the gh CLI. Use when asked to review a PR, provide structured feedback, or assess readiness to land. Do not merge, push, or make code changes you intend to keep.","LongIV999\u002FOpenclawd","LongIV999","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F92411512?v=4","01M6CEACAHRWWFRVKBQPSQ2WBM","01M6CEACEJDYKGDKD1P6A7J7VV",0,"MIT","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002F.agents\u002Farchive\u002Freview-pr-v1\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"review pr","pr","review","land","only","use","gh cli","gh","feedback","analysis","push","pull","code","pull request","merge","github","cli","2026-11-10 10:12:30",false,"---\nname: review-pr\ndescription: Review-only GitHub pull request analysis with the gh CLI. Use when asked to review a PR, provide structured feedback, or assess readiness to land. Do not merge, push, or make code changes you intend to keep.\n---\n\n# Review PR\n\n## Overview\n\nPerform a thorough review-only PR assessment and return a structured recommendation on readiness for \u002Fprepare-pr.\n\n## Inputs\n\n- Ask for PR number or URL.\n- If missing, always ask. Never auto-detect from conversation.\n- If ambiguous, ask.\n\n## Safety\n\n- Never push to `main` or `origin\u002Fmain`, not during review, not ever.\n- Do not run `git push` at all during review. Treat review as read only.\n- Do not stop or kill the gateway. Do not run gateway stop commands. Do not kill processes on port 18792.\n\n## Execution Rule\n\n- Execute the workflow. Do not stop after printing the TODO checklist.\n- If delegating, require the delegate to run commands and capture outputs, not a plan.\n\n## Known Failure Modes\n\n- If you see \"fatal: not a git repository\", you are in the wrong directory. Move to the repository root and retry.\n- Do not stop after printing the checklist. That is not completion.\n\n## Writing Style for Output\n\n- Write casual and direct.\n- Avoid em dashes and en dashes. Use commas or separate sentences.\n\n## Completion Criteria\n\n- Run the commands in the worktree and inspect the PR directly.\n- Produce the structured review sections A through J.\n- Save the full review to `.local\u002Freview.md` inside the worktree.\n- Save PR metadata handoff to `.local\u002Fpr-meta.env` inside the worktree.\n\n## First: Create a TODO Checklist\n\nCreate a checklist of all review steps, print it, then continue and execute the commands.\n\n## Setup: Use a Worktree\n\nUse an isolated worktree for all review work.\n\n```sh\nrepo_root=$(git rev-parse --show-toplevel)\ncd \"$repo_root\"\ngh auth status\n\nWORKTREE_DIR=\".worktrees\u002Fpr-\u003CPR>\"\ngit fetch origin main\n\n# Reuse existing worktree if it exists, otherwise create new\nif [ -d \"$WORKTREE_DIR\" ]; then\n  git worktree list\n  cd \"$WORKTREE_DIR\"\n  git fetch origin main\n  git checkout -B temp\u002Fpr-\u003CPR> origin\u002Fmain\nelse\n  git worktree add \"$WORKTREE_DIR\" -b temp\u002Fpr-\u003CPR> origin\u002Fmain\n  cd \"$WORKTREE_DIR\"\nfi\n\n# Create local scratch space that persists across \u002Freview-pr to \u002Fprepare-pr to \u002Fmerge-pr\nmkdir -p .local\n```\n\nRun all commands inside the worktree directory.\nStart on `origin\u002Fmain` so you can check for existing implementations before looking at PR code.\n\n## Steps\n\n1. Identify PR meta and context\n\n```sh\npr_meta_json=$(gh pr view \u003CPR> --json number,title,state,isDraft,author,baseRefName,headRefName,headRefOid,headRepository,url,body,labels,assignees,reviewRequests,files,additions,deletions,statusCheckRollup)\nprintf '%s\\n' \"$pr_meta_json\" | jq '{number,title,url,state,isDraft,author:.author.login,base:.baseRefName,head:.headRefName,headSha:.headRefOid,headRepo:.headRepository.nameWithOwner,additions,deletions,files:(.files|length),body}'\n\ncat > .local\u002Fpr-meta.env \u003C\u003CEOF\nPR_NUMBER=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .number)\nPR_URL=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .url)\nPR_AUTHOR=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .author.login)\nPR_BASE=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .baseRefName)\nPR_HEAD=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .headRefName)\nPR_HEAD_SHA=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .headRefOid)\nPR_HEAD_REPO=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .headRepository.nameWithOwner)\nEOF\n\nls -la .local\u002Fpr-meta.env\n```\n\n2. Check if this already exists in main before looking at the PR branch\n\n- Identify the core feature or fix from the PR title and description.\n- Search for existing implementations using keywords from the PR title, changed file paths, and function or component names from the diff.\n\n```sh\n# Use keywords from the PR title and changed files\nrg -n \"\u003Ckeyword_from_pr_title>\" -S src packages apps ui || true\nrg -n \"\u003Cfunction_or_component_name>\" -S src packages apps ui || true\n\ngit log --oneline --all --grep=\"\u003Ckeyword_from_pr_title>\" | head -20\n```\n\nIf it already exists, call it out as a BLOCKER or at least IMPORTANT.\n\n3. Claim the PR\n\nAssign yourself so others know someone is reviewing. Skip if the PR looks like spam or is a draft you plan to recommend closing.\n\n```sh\ngh_user=$(gh api user --jq .login)\ngh pr edit \u003CPR> --add-assignee \"$gh_user\" || echo \"Could not assign reviewer, continuing\"\n```\n\n4. Read the PR description carefully\n\nUse the body from step 1. Summarize goal, scope, and missing context.\n\n5. Read the diff thoroughly\n\nMinimum:\n\n```sh\ngh pr diff \u003CPR>\n```\n\nIf you need full code context locally, fetch the PR head to a local ref and diff it. Do not create a merge commit.\n\n```sh\ngit fetch origin pull\u002F\u003CPR>\u002Fhead:pr-\u003CPR> --force\nmb=$(git merge-base origin\u002Fmain pr-\u003CPR>)\n\n# Show only this PR patch relative to merge-base, not total branch drift\ngit diff --stat \"$mb\"..pr-\u003CPR>\ngit diff \"$mb\"..pr-\u003CPR>\n```\n\nIf you want to browse the PR version of files directly, temporarily check out `pr-\u003CPR>` in the worktree. Do not commit or push. Return to `temp\u002Fpr-\u003CPR>` and reset to `origin\u002Fmain` afterward.\n\n```sh\n# Use only if needed\n# git checkout pr-\u003CPR>\n# git branch --show-current\n# ...inspect files...\n\ngit checkout temp\u002Fpr-\u003CPR>\ngit checkout -B temp\u002Fpr-\u003CPR> origin\u002Fmain\ngit branch --show-current\n```\n\n6. Validate the change is needed and valuable\n\nBe honest. Call out low value AI slop.\n\n7. Evaluate implementation quality\n\nReview correctness, design, performance, and ergonomics.\n\n8. Perform a security review\n\nAssume OpenClaw subagents run with full disk access, including git, gh, and shell. Check auth, input validation, secrets, dependencies, tool safety, and privacy.\n\n9. Review tests and verification\n\nIdentify what exists, what is missing, and what would be a minimal regression test.\n\nIf you run local tests in the worktree, bootstrap dependencies first:\n\n```sh\nif [ ! -x node_modules\u002F.bin\u002Fvitest ]; then\n  pnpm install --frozen-lockfile\nfi\n```\n\n10. Check docs\n\nCheck if the PR touches code with related documentation such as README, docs, inline API docs, or config examples.\n\n- If docs exist for the changed area and the PR does not update them, flag as IMPORTANT.\n- If the PR adds a new feature or config option with no docs, flag as IMPORTANT.\n- If the change is purely internal with no user-facing impact, skip this.\n\n11. Check changelog\n\nCheck if `CHANGELOG.md` exists and whether the PR warrants an entry.\n\n- If the project has a changelog and the PR is user-facing, flag missing entry as IMPORTANT.\n- Leave the change for \u002Fprepare-pr, only flag it here.\n\n12. Answer the key question\n\nDecide if \u002Fprepare-pr can fix issues or the contributor must update the PR.\n\n13. Save findings to the worktree\n\nWrite the full structured review sections A through J to `.local\u002Freview.md`.\nCreate or overwrite the file and verify it exists and is non-empty.\n\n```sh\nls -la .local\u002Freview.md\nwc -l .local\u002Freview.md\n```\n\n14. Output the structured review\n\nProduce a review that matches what you saved to `.local\u002Freview.md`.\n\nA) TL;DR recommendation\n\n- One of: READY FOR \u002Fprepare-pr | NEEDS WORK | NEEDS DISCUSSION | NOT USEFUL (CLOSE)\n- 1 to 3 sentences.\n\nB) What changed\n\nC) What is good\n\nD) Security findings\n\nE) Concerns or questions (actionable)\n\n- Numbered list.\n- Mark each item as BLOCKER, IMPORTANT, or NIT.\n- For each, point to file or area and propose a concrete fix.\n\nF) Tests\n\nG) Docs status\n\n- State if related docs are up to date, missing, or not applicable.\n\nH) Changelog\n\n- State if `CHANGELOG.md` needs an entry and which category.\n\nI) Follow ups (optional)\n\nJ) Suggested PR comment (optional)\n\n## Guardrails\n\n- Worktree only.\n- Do not delete the worktree after review.\n- Review only, do not merge, do not push.\n","# Review PR\n\n## Overview\n\nPerform a thorough review-only PR assessment and return a structured recommendation on readiness for \u002Fprepare-pr.\n\n## Inputs\n\n- Ask for PR number or URL.\n- If missing, always ask. Never auto-detect from conversation.\n- If ambiguous, ask.\n\n## Safety\n\n- Never push to `main` or `origin\u002Fmain`, not during review, not ever.\n- Do not run `git push` at all during review. Treat review as read only.\n- Do not stop or kill the gateway. Do not run gateway stop commands. Do not kill processes on port 18792.\n\n## Execution Rule\n\n- Execute the workflow. Do not stop after printing the TODO checklist.\n- If delegating, require the delegate to run commands and capture outputs, not a plan.\n\n## Known Failure Modes\n\n- If you see \"fatal: not a git repository\", you are in the wrong directory. Move to the repository root and retry.\n- Do not stop after printing the checklist. That is not completion.\n\n## Writing Style for Output\n\n- Write casual and direct.\n- Avoid em dashes and en dashes. Use commas or separate sentences.\n\n## Completion Criteria\n\n- Run the commands in the worktree and inspect the PR directly.\n- Produce the structured review sections A through J.\n- Save the full review to `.local\u002Freview.md` inside the worktree.\n- Save PR metadata handoff to `.local\u002Fpr-meta.env` inside the worktree.\n\n## First: Create a TODO Checklist\n\nCreate a checklist of all review steps, print it, then continue and execute the commands.\n\n## Setup: Use a Worktree\n\nUse an isolated worktree for all review work.\n\n```sh\nrepo_root=$(git rev-parse --show-toplevel)\ncd \"$repo_root\"\ngh auth status\n\nWORKTREE_DIR=\".worktrees\u002Fpr-\u003CPR>\"\ngit fetch origin main\n\n# Reuse existing worktree if it exists, otherwise create new\nif [ -d \"$WORKTREE_DIR\" ]; then\n  git worktree list\n  cd \"$WORKTREE_DIR\"\n  git fetch origin main\n  git checkout -B temp\u002Fpr-\u003CPR> origin\u002Fmain\nelse\n  git worktree add \"$WORKTREE_DIR\" -b temp\u002Fpr-\u003CPR> origin\u002Fmain\n  cd \"$WORKTREE_DIR\"\nfi\n\n# Create local scratch space that persists across \u002Freview-pr to \u002Fprepare-pr to \u002Fmerge-pr\nmkdir -p .local\n```\n\nRun all commands inside the worktree directory.\nStart on `origin\u002Fmain` so you can check for existing implementations before looking at PR code.\n\n## Steps\n\n1. Identify PR meta and context\n\n```sh\npr_meta_json=$(gh pr view \u003CPR> --json number,title,state,isDraft,author,baseRefName,headRefName,headRefOid,headRepository,url,body,labels,assignees,reviewRequests,files,additions,deletions,statusCheckRollup)\nprintf '%s\\n' \"$pr_meta_json\" | jq '{number,title,url,state,isDraft,author:.author.login,base:.baseRefName,head:.headRefName,headSha:.headRefOid,headRepo:.headRepository.nameWithOwner,additions,deletions,files:(.files|length),body}'\n\ncat > .local\u002Fpr-meta.env \u003C\u003CEOF\nPR_NUMBER=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .number)\nPR_URL=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .url)\nPR_AUTHOR=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .author.login)\nPR_BASE=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .baseRefName)\nPR_HEAD=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .headRefName)\nPR_HEAD_SHA=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .headRefOid)\nPR_HEAD_REPO=$(printf '%s\\n' \"$pr_meta_json\" | jq -r .headRepository.nameWithOwner)\nEOF\n\nls -la .local\u002Fpr-meta.env\n```\n\n2. Check if this already exists in main before looking at the PR branch\n\n- Identify the core feature or fix from the PR title and description.\n- Search for existing implementations using keywords from the PR title, changed file paths, and function or component names from the diff.\n\n```sh\n# Use keywords from the PR title and changed files\nrg -n \"\u003Ckeyword_from_pr_title>\" -S src packages apps ui || true\nrg -n \"\u003Cfunction_or_component_name>\" -S src packages apps ui || true\n\ngit log --oneline --all --grep=\"\u003Ckeyword_from_pr_title>\" | head -20\n```\n\nIf it already exists, call it out as a BLOCKER or at least IMPORTANT.\n\n3. Claim the PR\n\nAssign yourself so others know someone is reviewing. Skip if the PR looks like spam or is a draft you plan to recommend closing.\n\n```sh\ngh_user=$(gh api user --jq .login)\ngh pr edit \u003CPR> --add-assignee \"$gh_user\" || echo \"Could not assign reviewer, continuing\"\n```\n\n4. Read the PR description carefully\n\nUse the body from step 1. Summarize goal, scope, and missing context.\n\n5. Read the diff thoroughly\n\nMinimum:\n\n```sh\ngh pr diff \u003CPR>\n```\n\nIf you need full code context locally, fetch the PR head to a local ref and diff it. Do not create a merge commit.\n\n```sh\ngit fetch origin pull\u002F\u003CPR>\u002Fhead:pr-\u003CPR> --force\nmb=$(git merge-base origin\u002Fmain pr-\u003CPR>)\n\n# Show only this PR patch relative to merge-base, not total branch drift\ngit diff --stat \"$mb\"..pr-\u003CPR>\ngit diff \"$mb\"..pr-\u003CPR>\n```\n\nIf you want to browse the PR version of files directly, temporarily check out `pr-\u003CPR>` in the worktree. Do not commit or push. Return to `temp\u002Fpr-\u003CPR>` and reset to `origin\u002Fmain` afterward.\n\n```sh\n# Use only if needed\n# git checkout pr-\u003CPR>\n# git branch --show-current\n# ...inspect files...\n\ngit checkout temp\u002Fpr-\u003CPR>\ngit checkout -B temp\u002Fpr-\u003CPR> origin\u002Fmain\ngit branch --show-current\n```\n\n6. Validate the change is needed and valuable\n\nBe honest. Call out low value AI slop.\n\n7. Evaluate implementation quality\n\nReview correctness, design, performance, and ergonomics.\n\n8. Perform a security review\n\nAssume OpenClaw subagents run with full disk access, including git, gh, and shell. Check auth, input validation, secrets, dependencies, tool safety, and privacy.\n\n9. Review tests and verification\n\nIdentify what exists, what is missing, and what would be a minimal regression test.\n\nIf you run local tests in the worktree, bootstrap dependencies first:\n\n```sh\nif [ ! -x node_modules\u002F.bin\u002Fvitest ]; then\n  pnpm install --frozen-lockfile\nfi\n```\n\n10. Check docs\n\nCheck if the PR touches code with related documentation such as README, docs, inline API docs, or config examples.\n\n- If docs exist for the changed area and the PR does not update them, flag as IMPORTANT.\n- If the PR adds a new feature or config option with no docs, flag as IMPORTANT.\n- If the change is purely internal with no user-facing impact, skip this.\n\n11. Check changelog\n\nCheck if `CHANGELOG.md` exists and whether the PR warrants an entry.\n\n- If the project has a changelog and the PR is user-facing, flag missing entry as IMPORTANT.\n- Leave the change for \u002Fprepare-pr, only flag it here.\n\n12. Answer the key question\n\nDecide if \u002Fprepare-pr can fix issues or the contributor must update the PR.\n\n13. Save findings to the worktree\n\nWrite the full structured review sections A through J to `.local\u002Freview.md`.\nCreate or overwrite the file and verify it exists and is non-empty.\n\n```sh\nls -la .local\u002Freview.md\nwc -l .local\u002Freview.md\n```\n\n14. Output the structured review\n\nProduce a review that matches what you saved to `.local\u002Freview.md`.\n\nA) TL;DR recommendation\n\n- One of: READY FOR \u002Fprepare-pr | NEEDS WORK | NEEDS DISCUSSION | NOT USEFUL (CLOSE)\n- 1 to 3 sentences.\n\nB) What changed\n\nC) What is good\n\nD) Security findings\n\nE) Concerns or questions (actionable)\n\n- Numbered list.\n- Mark each item as BLOCKER, IMPORTANT, or NIT.\n- For each, point to file or area and propose a concrete fix.\n\nF) Tests\n\nG) Docs status\n\n- State if related docs are up to date, missing, or not applicable.\n\nH) Changelog\n\n- State if `CHANGELOG.md` needs an entry and which category.\n\nI) Follow ups (optional)\n\nJ) Suggested PR comment (optional)\n\n## Guardrails\n\n- Worktree only.\n- Do not delete the worktree after review.\n- Review only, do not merge, do not push.\n",{"name":5,"description":7},"main","56e72bb5549c5fa0a0470501619427b4f104aa92",".agents\u002Farchive\u002Freview-pr-v1",1,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd","https:\u002F\u002Fgithub.com\u002FLongIV999","2026-02-15 08:26:56",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add LongIV999\u002FOpenclawd --skill review-pr",{"tool":53,"command":54},"bunx","bunx skills add LongIV999\u002FOpenclawd --skill review-pr",{"tool":56,"command":57},"pnpm","pnpm dlx skills add LongIV999\u002FOpenclawd --skill review-pr","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002F.agents\u002Farchive\u002Freview-pr-v1\u002FSKILL.md",true,[61],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"agents\u002Fopenai.yaml","REFERENCE","参考文档",184,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002F.agents\u002Farchive\u002Freview-pr-v1\u002Fagents\u002Fopenai.yaml",[68,77,88,106,119,135],{"skillNo":69,"name":70,"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":71,"categories":72,"keywords":73,"publishedAt":35},"01M6CEFMR22ANX8BMWBY9J8VW3","youtube-to-obsidian","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-to-obsidian\u002FSKILL.md",[],[74,75,76],"youtube to obsidian","youtube","obsidian",{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":35},"01M6CEFJW8HMZ7EY2C7FXDN8HG","weather","Get current weather and forecasts (no API key required).","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[79,84,85,86,87],"help","https","api","curl",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":35},"01M6CEFGENXXNDQTCWVC82VBFT","wacli","Send WhatsApp messages to other people or search\u002Fsync WhatsApp history via the wacli CLI (not for normal user chats).","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Fwacli\u002FSKILL.md",[],[90,33,34,95,96,85,97,98,99,100,101,102,103,104,105],"sync","search","messages","history","cmd","brew","user","install","tap","whatsapp","go",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":35},"01M6CEFERBY58R1VW8Z8ZCYEMY","voice-call","Start voice calls via the OpenClaw voice-call plugin.","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Fvoice-call\u002FSKILL.md",[],[113,114,115,116,117,118],"voice","voice call","openclaw","plugin","plugins","start",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":130,"publishedAt":35},"01M6CEFD0C501CWXD9E4BMV2B2","video-frames","Extract frames or short clips from videos using ffmpeg.","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-frames\u002FSKILL.md",[125],{"categoryNo":126,"categoryName":127,"taxonomyType":128,"taxonomyTypeDesc":129},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[131,132,100,85,133,134,102],"Video","video frames","short","extract",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":149,"publishedAt":35},"01M6CEFAJ48939CYW40VTBYGVP","trello","Manage Trello boards, lists, and cards via the Trello REST API.","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Ftrello\u002FSKILL.md",[141,144],{"categoryNo":142,"categoryName":143,"taxonomyType":128,"taxonomyTypeDesc":129},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":145,"categoryName":146,"taxonomyType":147,"taxonomyTypeDesc":148},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[137,85,150,151,152,86,153,154,155],"cloud","developer","REST","jq","atlassian","manage"]