[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CEF83MCF6TDJH2P3BACQ83":3,"skill-same:01M6CEF83MCF6TDJH2P3BACQ83":119},{"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":22,"linkOnly":23,"markdownContent":24,"markdownBody":25,"frontMatter":26,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":6,"ownerHtmlUrl":39,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":40,"install":41,"resources":54},"01M6CEF83MCF6TDJH2P3BACQ83","tmux",null,"Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.","LongIV999\u002FOpenclawd","LongIV999","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F92411512?v=4","01M6CEACAHRWWFRVKBQPSQ2WBM","01M6CEACEJDYKGDKD1P6A7J7VV",0,"MIT","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Ftmux\u002FSKILL.md",[],[5,18,19,20,21],"linux","sessions","interactive","scraping","2026-11-10 10:12:30",false,"---\nname: tmux\ndescription: Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.\nmetadata:\n  { \"openclaw\": { \"emoji\": \"?\", \"os\": [\"darwin\", \"linux\"], \"requires\": { \"bins\": [\"tmux\"] } } }\n---\n\n# tmux Skill (OpenClaw)\n\nUse tmux only when you need an interactive TTY. Prefer exec background mode for long-running, non-interactive tasks.\n\n## Quickstart (isolated socket, exec tool)\n\n```bash\nSOCKET_DIR=\"${OPENCLAW_TMUX_SOCKET_DIR:-${CLAWDBOT_TMUX_SOCKET_DIR:-${TMPDIR:-\u002Ftmp}\u002Fopenclaw-tmux-sockets}}\"\nmkdir -p \"$SOCKET_DIR\"\nSOCKET=\"$SOCKET_DIR\u002Fopenclaw.sock\"\nSESSION=openclaw-python\n\ntmux -S \"$SOCKET\" new -d -s \"$SESSION\" -n shell\ntmux -S \"$SOCKET\" send-keys -t \"$SESSION\":0.0 -- 'PYTHON_BASIC_REPL=1 python3 -q' Enter\ntmux -S \"$SOCKET\" capture-pane -p -J -t \"$SESSION\":0.0 -S -200\n```\n\nAfter starting a session, always print monitor commands:\n\n```\nTo monitor:\n  tmux -S \"$SOCKET\" attach -t \"$SESSION\"\n  tmux -S \"$SOCKET\" capture-pane -p -J -t \"$SESSION\":0.0 -S -200\n```\n\n## Socket convention\n\n- Use `OPENCLAW_TMUX_SOCKET_DIR` (legacy `CLAWDBOT_TMUX_SOCKET_DIR` also supported).\n- Default socket path: `\"$OPENCLAW_TMUX_SOCKET_DIR\u002Fopenclaw.sock\"`.\n\n## Targeting panes and naming\n\n- Target format: `session:window.pane` (defaults to `:0.0`).\n- Keep names short; avoid spaces.\n- Inspect: `tmux -S \"$SOCKET\" list-sessions`, `tmux -S \"$SOCKET\" list-panes -a`.\n\n## Finding sessions\n\n- List sessions on your socket: `{baseDir}\u002Fscripts\u002Ffind-sessions.sh -S \"$SOCKET\"`.\n- Scan all sockets: `{baseDir}\u002Fscripts\u002Ffind-sessions.sh --all` (uses `OPENCLAW_TMUX_SOCKET_DIR`).\n\n## Sending input safely\n\n- Prefer literal sends: `tmux -S \"$SOCKET\" send-keys -t target -l -- \"$cmd\"`.\n- Control keys: `tmux -S \"$SOCKET\" send-keys -t target C-c`.\n- For interactive TUI apps like Claude Code\u002FCodex, this guidance covers **how to send commands**.\n  Do **not** append `Enter` in the same `send-keys`. These apps may treat a fast text+Enter\n  sequence as paste\u002Fmulti-line input and not submit; this is timing-dependent. Send text and\n  `Enter` as separate commands with a small delay (tune per environment; increase if needed,\n  or use `sleep 1` if sub-second sleeps aren't supported):\n\n```bash\ntmux -S \"$SOCKET\" send-keys -t target -l -- \"$cmd\" && sleep 0.1 && tmux -S \"$SOCKET\" send-keys -t target Enter\n```\n\n## Watching output\n\n- Capture recent history: `tmux -S \"$SOCKET\" capture-pane -p -J -t target -S -200`.\n- Wait for prompts: `{baseDir}\u002Fscripts\u002Fwait-for-text.sh -t session:0.0 -p 'pattern'`.\n- Attaching is OK; detach with `Ctrl+b d`.\n\n## Spawning processes\n\n- For python REPLs, set `PYTHON_BASIC_REPL=1` (non-basic REPL breaks send-keys flows).\n\n## Windows \u002F WSL\n\n- tmux is supported on macOS\u002FLinux. On Windows, use WSL and install tmux inside WSL.\n- This skill is gated to `darwin`\u002F`linux` and requires `tmux` on PATH.\n\n## Orchestrating Coding Agents (Codex, Claude Code)\n\ntmux excels at running multiple coding agents in parallel:\n\n```bash\nSOCKET=\"${TMPDIR:-\u002Ftmp}\u002Fcodex-army.sock\"\n\n# Create multiple sessions\nfor i in 1 2 3 4 5; do\n  tmux -S \"$SOCKET\" new-session -d -s \"agent-$i\"\ndone\n\n# Launch agents in different workdirs\ntmux -S \"$SOCKET\" send-keys -t agent-1 \"cd \u002Ftmp\u002Fproject1 && codex --yolo 'Fix bug X'\" Enter\ntmux -S \"$SOCKET\" send-keys -t agent-2 \"cd \u002Ftmp\u002Fproject2 && codex --yolo 'Fix bug Y'\" Enter\n\n# When sending prompts to Claude Code\u002FCodex TUI, split text + Enter with a delay\ntmux -S \"$SOCKET\" send-keys -t agent-1 -l -- \"Please make a small edit to README.md.\" && sleep 0.1 && tmux -S \"$SOCKET\" send-keys -t agent-1 Enter\n\n# Poll for completion (check if prompt returned)\nfor sess in agent-1 agent-2; do\n  if tmux -S \"$SOCKET\" capture-pane -p -t \"$sess\" -S -3 | grep -q \"❯\"; then\n    echo \"$sess: DONE\"\n  else\n    echo \"$sess: Running...\"\n  fi\ndone\n\n# Get full output from completed session\ntmux -S \"$SOCKET\" capture-pane -p -t agent-1 -S -500\n```\n\n**Tips:**\n\n- Use separate git worktrees for parallel fixes (no branch conflicts)\n- `pnpm install` first before running codex in fresh clones\n- Check for shell prompt (`❯` or `$`) to detect completion\n- Codex needs `--yolo` or `--full-auto` for non-interactive fixes\n\n## Cleanup\n\n- Kill a session: `tmux -S \"$SOCKET\" kill-session -t \"$SESSION\"`.\n- Kill all sessions on a socket: `tmux -S \"$SOCKET\" list-sessions -F '#{session_name}' | xargs -r -n1 tmux -S \"$SOCKET\" kill-session -t`.\n- Remove everything on the private socket: `tmux -S \"$SOCKET\" kill-server`.\n\n## Helper: wait-for-text.sh\n\n`{baseDir}\u002Fscripts\u002Fwait-for-text.sh` polls a pane for a regex (or fixed string) with a timeout.\n\n```bash\n{baseDir}\u002Fscripts\u002Fwait-for-text.sh -t session:0.0 -p 'pattern' [-F] [-T 20] [-i 0.5] [-l 2000]\n```\n\n- `-t`\u002F`--target` pane target (required)\n- `-p`\u002F`--pattern` regex to match (required); add `-F` for fixed string\n- `-T` timeout seconds (integer, default 15)\n- `-i` poll interval seconds (default 0.5)\n- `-l` history lines to search (integer, default 1000)\n","# tmux Skill (OpenClaw)\n\nUse tmux only when you need an interactive TTY. Prefer exec background mode for long-running, non-interactive tasks.\n\n## Quickstart (isolated socket, exec tool)\n\n```bash\nSOCKET_DIR=\"${OPENCLAW_TMUX_SOCKET_DIR:-${CLAWDBOT_TMUX_SOCKET_DIR:-${TMPDIR:-\u002Ftmp}\u002Fopenclaw-tmux-sockets}}\"\nmkdir -p \"$SOCKET_DIR\"\nSOCKET=\"$SOCKET_DIR\u002Fopenclaw.sock\"\nSESSION=openclaw-python\n\ntmux -S \"$SOCKET\" new -d -s \"$SESSION\" -n shell\ntmux -S \"$SOCKET\" send-keys -t \"$SESSION\":0.0 -- 'PYTHON_BASIC_REPL=1 python3 -q' Enter\ntmux -S \"$SOCKET\" capture-pane -p -J -t \"$SESSION\":0.0 -S -200\n```\n\nAfter starting a session, always print monitor commands:\n\n```\nTo monitor:\n  tmux -S \"$SOCKET\" attach -t \"$SESSION\"\n  tmux -S \"$SOCKET\" capture-pane -p -J -t \"$SESSION\":0.0 -S -200\n```\n\n## Socket convention\n\n- Use `OPENCLAW_TMUX_SOCKET_DIR` (legacy `CLAWDBOT_TMUX_SOCKET_DIR` also supported).\n- Default socket path: `\"$OPENCLAW_TMUX_SOCKET_DIR\u002Fopenclaw.sock\"`.\n\n## Targeting panes and naming\n\n- Target format: `session:window.pane` (defaults to `:0.0`).\n- Keep names short; avoid spaces.\n- Inspect: `tmux -S \"$SOCKET\" list-sessions`, `tmux -S \"$SOCKET\" list-panes -a`.\n\n## Finding sessions\n\n- List sessions on your socket: `{baseDir}\u002Fscripts\u002Ffind-sessions.sh -S \"$SOCKET\"`.\n- Scan all sockets: `{baseDir}\u002Fscripts\u002Ffind-sessions.sh --all` (uses `OPENCLAW_TMUX_SOCKET_DIR`).\n\n## Sending input safely\n\n- Prefer literal sends: `tmux -S \"$SOCKET\" send-keys -t target -l -- \"$cmd\"`.\n- Control keys: `tmux -S \"$SOCKET\" send-keys -t target C-c`.\n- For interactive TUI apps like Claude Code\u002FCodex, this guidance covers **how to send commands**.\n  Do **not** append `Enter` in the same `send-keys`. These apps may treat a fast text+Enter\n  sequence as paste\u002Fmulti-line input and not submit; this is timing-dependent. Send text and\n  `Enter` as separate commands with a small delay (tune per environment; increase if needed,\n  or use `sleep 1` if sub-second sleeps aren't supported):\n\n```bash\ntmux -S \"$SOCKET\" send-keys -t target -l -- \"$cmd\" && sleep 0.1 && tmux -S \"$SOCKET\" send-keys -t target Enter\n```\n\n## Watching output\n\n- Capture recent history: `tmux -S \"$SOCKET\" capture-pane -p -J -t target -S -200`.\n- Wait for prompts: `{baseDir}\u002Fscripts\u002Fwait-for-text.sh -t session:0.0 -p 'pattern'`.\n- Attaching is OK; detach with `Ctrl+b d`.\n\n## Spawning processes\n\n- For python REPLs, set `PYTHON_BASIC_REPL=1` (non-basic REPL breaks send-keys flows).\n\n## Windows \u002F WSL\n\n- tmux is supported on macOS\u002FLinux. On Windows, use WSL and install tmux inside WSL.\n- This skill is gated to `darwin`\u002F`linux` and requires `tmux` on PATH.\n\n## Orchestrating Coding Agents (Codex, Claude Code)\n\ntmux excels at running multiple coding agents in parallel:\n\n```bash\nSOCKET=\"${TMPDIR:-\u002Ftmp}\u002Fcodex-army.sock\"\n\n# Create multiple sessions\nfor i in 1 2 3 4 5; do\n  tmux -S \"$SOCKET\" new-session -d -s \"agent-$i\"\ndone\n\n# Launch agents in different workdirs\ntmux -S \"$SOCKET\" send-keys -t agent-1 \"cd \u002Ftmp\u002Fproject1 && codex --yolo 'Fix bug X'\" Enter\ntmux -S \"$SOCKET\" send-keys -t agent-2 \"cd \u002Ftmp\u002Fproject2 && codex --yolo 'Fix bug Y'\" Enter\n\n# When sending prompts to Claude Code\u002FCodex TUI, split text + Enter with a delay\ntmux -S \"$SOCKET\" send-keys -t agent-1 -l -- \"Please make a small edit to README.md.\" && sleep 0.1 && tmux -S \"$SOCKET\" send-keys -t agent-1 Enter\n\n# Poll for completion (check if prompt returned)\nfor sess in agent-1 agent-2; do\n  if tmux -S \"$SOCKET\" capture-pane -p -t \"$sess\" -S -3 | grep -q \"❯\"; then\n    echo \"$sess: DONE\"\n  else\n    echo \"$sess: Running...\"\n  fi\ndone\n\n# Get full output from completed session\ntmux -S \"$SOCKET\" capture-pane -p -t agent-1 -S -500\n```\n\n**Tips:**\n\n- Use separate git worktrees for parallel fixes (no branch conflicts)\n- `pnpm install` first before running codex in fresh clones\n- Check for shell prompt (`❯` or `$`) to detect completion\n- Codex needs `--yolo` or `--full-auto` for non-interactive fixes\n\n## Cleanup\n\n- Kill a session: `tmux -S \"$SOCKET\" kill-session -t \"$SESSION\"`.\n- Kill all sessions on a socket: `tmux -S \"$SOCKET\" list-sessions -F '#{session_name}' | xargs -r -n1 tmux -S \"$SOCKET\" kill-session -t`.\n- Remove everything on the private socket: `tmux -S \"$SOCKET\" kill-server`.\n\n## Helper: wait-for-text.sh\n\n`{baseDir}\u002Fscripts\u002Fwait-for-text.sh` polls a pane for a regex (or fixed string) with a timeout.\n\n```bash\n{baseDir}\u002Fscripts\u002Fwait-for-text.sh -t session:0.0 -p 'pattern' [-F] [-T 20] [-i 0.5] [-l 2000]\n```\n\n- `-t`\u002F`--target` pane target (required)\n- `-p`\u002F`--pattern` regex to match (required); add `-F` for fixed string\n- `-T` timeout seconds (integer, default 15)\n- `-i` poll interval seconds (default 0.5)\n- `-l` history lines to search (integer, default 1000)\n",{"name":5,"metadata":27,"description":7},{"openclaw":28},{"os":29,"emoji":31,"requires":32},[30,18],"darwin","?",{"bins":33},[5],"main","56e72bb5549c5fa0a0470501619427b4f104aa92","skills\u002Ftmux",1,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd","https:\u002F\u002Fgithub.com\u002FLongIV999","2026-02-15 08:26:56",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add LongIV999\u002FOpenclawd --skill tmux",{"tool":47,"command":48},"bunx","bunx skills add LongIV999\u002FOpenclawd --skill tmux",{"tool":50,"command":51},"pnpm","pnpm dlx skills add LongIV999\u002FOpenclawd --skill tmux","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Ftmux\u002FSKILL.md",true,[55,61,65,69,75,79,83,87,91,95,99,103,107,111,115],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"references\u002Fadaptive-density-matrix.md","REFERENCE","参考文档",6560,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Freferences\u002Fadaptive-density-matrix.md",{"path":62,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":63,"sourceHtmlUrl":64},"references\u002Fadvice-checkpoints.md",3292,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Freferences\u002Fadvice-checkpoints.md",{"path":66,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":67,"sourceHtmlUrl":68},"references\u002Fagent-teams-vs-subagents.md",5760,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Freferences\u002Fagent-teams-vs-subagents.md",{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"scripts\u002Fbudget-tracker.sh","SCRIPT","脚本",3237,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Fscripts\u002Fbudget-tracker.sh",{"path":76,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":77,"sourceHtmlUrl":78},"scripts\u002Fdensity-select.sh",3187,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Fscripts\u002Fdensity-select.sh",{"path":80,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":81,"sourceHtmlUrl":82},"scripts\u002Ffind-sessions.sh",2974,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Ftmux\u002Fscripts\u002Ffind-sessions.sh",{"path":84,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":85,"sourceHtmlUrl":86},"scripts\u002Fwait-for-text.sh",2139,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Ftmux\u002Fscripts\u002Fwait-for-text.sh",{"path":88,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":89,"sourceHtmlUrl":90},"step-00-tier-detection.md",3389,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Fstep-00-tier-detection.md",{"path":92,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":93,"sourceHtmlUrl":94},"step-01-plan.md",2449,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Fstep-01-plan.md",{"path":96,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":97,"sourceHtmlUrl":98},"step-02-contract.md",3308,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Fstep-02-contract.md",{"path":100,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":101,"sourceHtmlUrl":102},"step-03-generate.md",5578,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Fstep-03-generate.md",{"path":104,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":105,"sourceHtmlUrl":106},"step-04-evaluate.md",5219,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Fstep-04-evaluate.md",{"path":108,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":109,"sourceHtmlUrl":110},"step-05-iterate-or-ship.md",10358,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Fstep-05-iterate-or-ship.md",{"path":112,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":113,"sourceHtmlUrl":114},"step-06-run-report.md",5546,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Fstep-06-run-report.md",{"path":116,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":117,"sourceHtmlUrl":118},"workflow.md",6337,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fpackages\u002Fmewkit\u002Fsrc\u002Fmigrate\u002Fmodules\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-autobuild\u002Fworkflow.md",[120,129,140,160,173,189],{"skillNo":121,"name":122,"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":123,"categories":124,"keywords":125,"publishedAt":22},"01M6CEFMR22ANX8BMWBY9J8VW3","youtube-to-obsidian","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-to-obsidian\u002FSKILL.md",[],[126,127,128],"youtube to obsidian","youtube","obsidian",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":22},"01M6CEFJW8HMZ7EY2C7FXDN8HG","weather","Get current weather and forecasts (no API key required).","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[131,136,137,138,139],"help","https","api","curl",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":22},"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",[],[142,147,148,149,150,137,151,152,153,154,155,156,157,158,159],"github","cli","sync","search","messages","history","cmd","brew","user","install","tap","whatsapp","go",{"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":166,"publishedAt":22},"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",[],[167,168,169,170,171,172],"voice","voice call","openclaw","plugin","plugins","start",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":184,"publishedAt":22},"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",[179],{"categoryNo":180,"categoryName":181,"taxonomyType":182,"taxonomyTypeDesc":183},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[185,186,154,137,187,188,156],"Video","video frames","short","extract",{"skillNo":190,"name":191,"nameZh":6,"description":192,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":193,"categories":194,"keywords":203,"publishedAt":22},"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",[195,198],{"categoryNo":196,"categoryName":197,"taxonomyType":182,"taxonomyTypeDesc":183},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":199,"categoryName":200,"taxonomyType":201,"taxonomyTypeDesc":202},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[191,137,204,205,206,138,207,208,209],"cloud","developer","REST","jq","atlassian","manage"]