{"id":50412316,"url":"https://github.com/cskwork/wezterm-skill","last_synced_at":"2026-05-31T04:04:54.479Z","repository":{"id":358142769,"uuid":"1240207721","full_name":"cskwork/wezterm-skill","owner":"cskwork","description":"Claude Code skill for configuring and driving the WezTerm terminal emulator (Lua config, CLI, keybindings, multi-pane workflows, agent send-text/get-text loop)","archived":false,"fork":false,"pushed_at":"2026-05-15T23:41:00.000Z","size":90,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-16T00:50:47.085Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cskwork.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-15T22:01:47.000Z","updated_at":"2026-05-15T23:41:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cskwork/wezterm-skill","commit_stats":null,"previous_names":["cskwork/wezterm-skill"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/cskwork/wezterm-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Fwezterm-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Fwezterm-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Fwezterm-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Fwezterm-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cskwork","download_url":"https://codeload.github.com/cskwork/wezterm-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Fwezterm-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33718496,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-31T04:04:53.752Z","updated_at":"2026-05-31T04:04:54.467Z","avatar_url":"https://github.com/cskwork.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wezterm-skill\n\nA Claude Code skill for configuring and driving the [WezTerm](https://wezterm.org) terminal emulator. Bash + PowerShell helpers and an opinionated default config ship in the box.\n\nInstall once, then ask Claude things like:\n\n- \"set up wezterm with Catppuccin Mocha and tmux-style splits\"\n- \"split my wezterm.lua into modules and add a workspace switcher binding\"\n- \"scaffold a new SSH host called `prod` and add it as an ssh_domain\"\n- \"drive the pane on the right with `wezterm cli send-text` to run my tests\"\n- \"switch my color scheme to Tokyo Night Storm and bump font size to 13\"\n- \"install `resurrect.wezterm` and wire up auto-save every 5 minutes\"\n- \"fix CWD inheritance — new panes start in `~` instead of my project\"\n\n## What it covers\n\n- Default `wezterm.lua` (Catppuccin Mocha, tmux-style leader, copy/paste, pane splits) plus minimal and Claude-Code-multi-pane variants\n- WezTerm CLI surface: `list`, `spawn`, `split-pane`, `send-text`, `get-text`, `connect`, `ssh`\n- Default + custom keybindings, leader-key patterns, key_tables (resize/copy mode)\n- Pane splitting recipes, BSP layout helper\n- Driving a pane from an AI agent (`send-text` / `get-text` loop)\n- SSH: `wezterm ssh` vs persistent `ssh_domains`, helper scripts for both bash and PowerShell\n- Shell integration (OSC 7) for CWD inheritance on split, bash/zsh/fish/PowerShell\n- Modular `wezterm.lua` layout (`M.apply(config)` pattern, `helpers`/`theme`/`keys`/`events`)\n- IDE type completion via `lua-language-server` + community type stubs\n- Plugin system (`wezterm.plugin.require`) + curated community plugin list\n- Named workspaces, switching, persistence via unix multiplexer or `resurrect.wezterm`\n- Polish: inactive-pane dimming, `WebGpu` front-end, Zen mode toggle, OS-aware config\n\n## What's inside\n\n```\nwezterm-skill/\n  SKILL.md                       — entry point Claude loads\n  assets/\n    wezterm.lua                  — opinionated default config (copy this in)\n    wezterm-minimal.lua          — minimum viable starter\n    wezterm-claude.lua           — multi-pane Claude Code workflow\n  references/\n    cli.md                       — wezterm CLI subcommand reference\n    keybindings.md               — default + custom binding patterns\n    pane-splitting.md            — split panes by keyboard, defaults, CLI, layout recipes\n    config-options.md            — config option catalog\n    color-schemes.md             — popular themes with exact names\n    agent-driving.md             — drive a pane from an AI agent (send-text / get-text)\n    ssh.md                       — `wezterm ssh` and persistent ssh_domains\n    shell-integration.md         — OSC 7 setup for CWD inheritance on split\n    modular-config.md            — split wezterm.lua into helpers/theme/keys modules\n    types.md                     — lua-language-server + wezterm-types for IDE autocomplete\n    plugins.md                   — wezterm.plugin.require + curated community plugin list\n    workspaces.md                — named workspaces, switching, persistence, status bar\n  scripts/\n    bsp-split.sh                 — binary-space-partition pane split helper\n    add-ssh-host.sh              — scaffold a new SSH host (bash, key + ~/.ssh/config + ssh_domains)\n    Split-Bsp.ps1                — PowerShell port of bsp-split.sh (Windows-native)\n    Add-SshHost.ps1              — PowerShell port of add-ssh-host.sh (Windows-native)\n```\n\n## Install\n\nCopy the `wezterm-skill/` folder into your Claude Code skills directory:\n\n```bash\n# Linux / macOS\nmkdir -p ~/.claude/skills\ncp -r wezterm-skill ~/.claude/skills/wezterm\n\n# Windows (PowerShell)\nNew-Item -ItemType Directory -Force \"$env:USERPROFILE\\.claude\\skills\" | Out-Null\nCopy-Item -Recurse wezterm-skill \"$env:USERPROFILE\\.claude\\skills\\wezterm\"\n```\n\nRestart Claude Code (or `/skill-health`) and the `wezterm` skill should be listed.\n\n## Use the default config\n\nDrop the bundled config into your WezTerm config location:\n\n```bash\n# Linux / macOS\ncp ~/.claude/skills/wezterm/assets/wezterm.lua ~/.wezterm.lua\n\n# Windows (PowerShell)\nCopy-Item \"$env:USERPROFILE\\.claude\\skills\\wezterm\\assets\\wezterm.lua\" `\n          \"$env:USERPROFILE\\.wezterm.lua\"\n```\n\nWezTerm watches the file and reloads automatically. If something breaks, open the debug overlay with `Ctrl+Shift+L` to see the Lua error.\n\nThe default config sets:\n\n- Catppuccin Mocha theme, JetBrains Mono 14pt, slight transparency\n- `Ctrl+a` as leader (tmux-style)\n- Vim-style pane navigation (`LEADER h/j/k/l`), splits (`LEADER \\` / `LEADER -`), zoom (`LEADER z`)\n- Explicit copy/paste (`Ctrl+Shift+C` / `Ctrl+Shift+V`) plus `Ctrl+Insert` / `Shift+Insert`\n- Tab bar hidden when there is only one tab\n- Sensible defaults for scrollback, cursor, and window padding\n- **pwd + git branch in the OS title bar** (the row above the tabs) — updates ~1Hz, git is cached per pwd with a 5s TTL. See `references/status-bar.md` for the full pattern. Standalone module: `assets/git-pwd-status.lua`.\n\n### macOS: putting `wezterm` on PATH\n\nThe Homebrew cask installs WezTerm to `/Applications/WezTerm.app` but does NOT symlink the CLI into PATH. Without the symlinks, `wezterm cli send-text`, `wezterm cli list`, etc. fail to launch. WezTerm is a multi-call binary — `wezterm` shells out to sibling binaries `wezterm-gui` and `wezterm-mux-server`, so all three need to be on PATH together:\n\n```bash\nln -sf /Applications/WezTerm.app/Contents/MacOS/wezterm            ~/.local/bin/wezterm\nln -sf /Applications/WezTerm.app/Contents/MacOS/wezterm-gui        ~/.local/bin/wezterm-gui\nln -sf /Applications/WezTerm.app/Contents/MacOS/wezterm-mux-server ~/.local/bin/wezterm-mux-server\nhash -r   # reset zsh's command-location cache in this session\n```\n\nSubstitute `~/.local/bin` with whichever directory in your PATH is user-writable (`/opt/homebrew/bin` works too if you want it next to other Homebrew tools).\n\n## Multi-pane Claude Code workflow\n\nThe `assets/wezterm-claude.lua` config plus the BSP split helper give you a tmux-free way to run several Claude Code sessions side by side.\n\n```bash\n# Linux / macOS / Git Bash\ninstall -m 755 scripts/bsp-split.sh /tmp/bsp-split.sh\n\n# Windows-native (no Git Bash needed)\nCopy-Item scripts\\Split-Bsp.ps1 \"$env:USERPROFILE\\bin\\Split-Bsp.ps1\"\n```\n\nThen `LEADER s` (Ctrl+a, s) splits the current pane along its shorter axis and starts `claude` in the new pane. PATH and aliases are preserved because the command goes through your shell rather than `wezterm cli split-pane -- claude` (which bypasses the shell — do not use it).\n\n## SSH helpers\n\nScaffold a new SSH host (keypair, `~/.ssh/config` block, optional `ssh-copy-id`, optional WezTerm `ssh_domains` snippet):\n\n```bash\n# Linux / macOS / Git Bash\n./scripts/add-ssh-host.sh --alias prod --hostname 10.0.0.42 --user deploy \\\n                          --copy-id --wezterm-domain\n\n# Windows-native PowerShell\n./scripts/Add-SshHost.ps1 -Alias prod -HostAddress 10.0.0.42 -User deploy `\n                          -CopyId -WezTermDomain\n```\n\nBoth scripts are idempotent — re-running with the same alias is a no-op unless `--force` / `-Force` is passed.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcskwork%2Fwezterm-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcskwork%2Fwezterm-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcskwork%2Fwezterm-skill/lists"}