[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GW10S89RBYECA33RVF3441":3,"skill-same:01M6GW10S89RBYECA33RVF3441":76},{"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":22,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6GW10S89RBYECA33RVF3441","tmux",null,"Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.","RikyZ90\u002FShibaClaw","RikyZ90","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F184956820?v=4","01M6GVZMMY8X4BZ5D7RG27D2WB","01M6GVZMSNQV3DSF6214J7SYQ5",85,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FRikyZ90\u002FShibaClaw\u002Fblob\u002Fmain\u002Fshibaclaw\u002Fskills\u002Ftmux\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,23,24,25,26,27,28,29,30],"linux","sessions","interactive","scraping","control","output","remote","remote-control","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: {\"shibaclaw\":{\"emoji\":\"?\",\"os\":[\"darwin\",\"linux\"],\"requires\":{\"bins\":[\"tmux\"]}}}\n---\n\n# tmux Skill\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=\"${SHIBACLAW_TMUX_SOCKET_DIR:-${TMPDIR:-\u002Ftmp}\u002Fshibaclaw-tmux-sockets}\"\nmkdir -p \"$SOCKET_DIR\"\nSOCKET=\"$SOCKET_DIR\u002Fshibaclaw.sock\"\nSESSION=shibaclaw-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 `SHIBACLAW_TMUX_SOCKET_DIR` environment variable.\n- Default socket path: `\"$SHIBACLAW_TMUX_SOCKET_DIR\u002Fshibaclaw.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 `SHIBACLAW_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\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# 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- 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\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=\"${SHIBACLAW_TMUX_SOCKET_DIR:-${TMPDIR:-\u002Ftmp}\u002Fshibaclaw-tmux-sockets}\"\nmkdir -p \"$SOCKET_DIR\"\nSOCKET=\"$SOCKET_DIR\u002Fshibaclaw.sock\"\nSESSION=shibaclaw-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 `SHIBACLAW_TMUX_SOCKET_DIR` environment variable.\n- Default socket path: `\"$SHIBACLAW_TMUX_SOCKET_DIR\u002Fshibaclaw.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 `SHIBACLAW_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\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# 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- 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":36,"description":7},{"shibaclaw":37},{"os":38,"emoji":40,"requires":41},[39,23],"darwin","?",{"bins":42},[5],"main","0507a660abe0b5e9aaa840eb8ff9b7a800b7ce59","shibaclaw\u002Fskills\u002Ftmux",12,"https:\u002F\u002Fgithub.com\u002FRikyZ90\u002FShibaClaw","https:\u002F\u002Frikyz90.github.io\u002FShibaClaw\u002F","https:\u002F\u002Fgithub.com\u002FRikyZ90","RPA Architect & AI Automation expert","2026-11-03 19:45:01",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add RikyZ90\u002FShibaClaw --skill tmux",{"tool":58,"command":59},"bunx","bunx skills add RikyZ90\u002FShibaClaw --skill tmux",{"tool":61,"command":62},"pnpm","pnpm dlx skills add RikyZ90\u002FShibaClaw --skill tmux","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FRikyZ90\u002FShibaClaw\u002Fblob\u002Fmain\u002Fshibaclaw\u002Fskills\u002Ftmux\u002FSKILL.md",true,[66,72],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"scripts\u002Ffind-sessions.sh","SCRIPT","脚本",2951,"https:\u002F\u002Fgithub.com\u002FRikyZ90\u002FShibaClaw\u002Fblob\u002Fmain\u002Fshibaclaw\u002Fskills\u002Ftmux\u002Fscripts\u002Ffind-sessions.sh",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"scripts\u002Fwait-for-text.sh",2142,"https:\u002F\u002Fgithub.com\u002FRikyZ90\u002FShibaClaw\u002Fblob\u002Fmain\u002Fshibaclaw\u002Fskills\u002Ftmux\u002Fscripts\u002Fwait-for-text.sh",[77,95,108,131,142,157],{"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":84,"publishedAt":31},"01M6GW1A29JKZ016DBA68KHCNY","windows-shell","Manage long-running background jobs and interactive workflows on Windows using PowerShell Jobs (Start-Job, Receive-Job) — the Windows equivalent of tmux sessions.","https:\u002F\u002Fgithub.com\u002FRikyZ90\u002FShibaClaw\u002Fblob\u002Fmain\u002Fshibaclaw\u002Fskills\u002Fwindows-shell\u002FSKILL.md",[83],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[85,86,87,5,88,24,89,90,25,91,92,93,94],"windows shell","shell","windows","workflows","start","powershell","manage","jobs","background jobs","long",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":102,"publishedAt":31},"01M6GW15DXJK3VCYEWE1NF5GXT","weather","Get current weather and forecasts (no API key required).","https:\u002F\u002Fgithub.com\u002FRikyZ90\u002FShibaClaw\u002Fblob\u002Fmain\u002Fshibaclaw\u002Fskills\u002Fweather\u002FSKILL.md",[101],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[97,103,104,105,106,107],"api","https","help","curl","get",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":118,"publishedAt":31},"01M6GW0VVM3PVZ28R1SBRHVAJH","summarize","Summarize or extract text\u002Ftranscripts from URLs, podcasts, and local files (great fallback for “transcribe this YouTube\u002Fvideo”).","https:\u002F\u002Fgithub.com\u002FRikyZ90\u002FShibaClaw\u002Fblob\u002Fmain\u002Fshibaclaw\u002Fskills\u002Fsummarize\u002FSKILL.md",[114,117],{"categoryNo":115,"categoryName":116,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[110,119,120,121,122,123,124,125,104,126,127,128,129,130],"fallback","transcripts","local","tap","brew","youtube","transcribe","Video","text","extract","install","files",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":138,"publishedAt":31},"01M6GW0Q9G2XKAKCKWVCR8DCQR","mock-skill","A mock skill for testing.","https:\u002F\u002Fgithub.com\u002FRikyZ90\u002FShibaClaw\u002Fblob\u002Fmain\u002Fshibaclaw\u002Fskills\u002Fskill-validator\u002Fmock_skill\u002FSKILL.md",[137],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[139,140,141],"mock skill","mock","testing",{"skillNo":143,"name":144,"nameZh":6,"description":145,"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":149,"publishedAt":31},"01M6GW0K4FQH9V0YHERHT3699Y","skill-validator","Provides tools to validate skill manifests and calculate skill directory sizes.","https:\u002F\u002Fgithub.com\u002FRikyZ90\u002FShibaClaw\u002Fblob\u002Fmain\u002Fshibaclaw\u002Fskills\u002Fskill-validator\u002FSKILL.md",[148],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[150,151,152,153,154,155,156],"validator","skill validator","validate","directory","Tools","calculate","manifests",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":164,"publishedAt":31},"01M6GW0E6RA7DFBBAQKBMHNPXM","skill-creator","Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.","https:\u002F\u002Fgithub.com\u002FRikyZ90\u002FShibaClaw\u002Fblob\u002Fmain\u002Fshibaclaw\u002Fskills\u002Fskill-creator\u002FSKILL.md",[163],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[165,166,167,168,169,170,171,172,173,174,175,176],"skill creator","creator","create","update","assets","packaging","use","references","agentskills","with scripts","scripts","with"]