Agent skill

Wispterm Diagnostics

by xuzhougeng in xuzhougeng/wispterm

A skill your agent uses when a user wants to report, troubleshoot, or collect context for a WispTerm issue, including crashes, rendering/DPI glitches, high CPU, keyboard/input bugs…

MITAuto-check passed

Install Wispterm Diagnostics

skills CLI
$ npx skills add xuzhougeng/wispterm --skill wispterm-diagnostics -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install xuzhougeng/wispterm wispterm-diagnostics --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/xuzhougeng/wispterm.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/skills/wispterm-diagnostics .claude/skills/wispterm-diagnostics && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
wispterm-diagnostics
GitHub stars
443
Token cost
~3.1k tokens
SKILL.md length
1,135 words
Files
3 (incl. scripts)
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when a user wants to report, troubleshoot, or collect context for a WispTerm issue, including crashes, rendering/DPI glitches, high CPU, keyboard/input bugs…

  • Works in 3 steps: If a user needs instructions, tell them… → Infer -ProblemType from the user's text.… → Run the script from this skill directory…
  • A user wants to report
  • SKILL.md covers Overview, Windows Workflow, High-Signal Issue Workflows and macOS Workflow, plus 3 more sections
  • Runs PowerShell scripts from its folder; calls ssh, python3 and python

What it does

Wispterm Diagnostics is an agent skill from xuzhougeng/wispterm. Use when a user wants to report, troubleshoot, or collect context for a WispTerm issue, including crashes, rendering/DPI glitches, high CPU, keyboard/input bugs, selection/copy/scrolling, SSH/SCP failures, SSH image preview failures, HTML preview/browser panel failures, SSH disconnects such as sshpacketwritepoll/eother, file explorer behavior, updater failures, or remote console behavior.

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts (for example `agents/openai.yaml`).

It works with macOS and PowerShell. The repository describes itself as: A cross-platform terminal workspace for remote development and AI agent workflows, powered by libghostty-vt. The licence is MIT.

When your agent uses it

  • A user wants to report
  • Collect context for a WispTerm issue
  • Including crashes
  • Rendering/DPI glitches

Example prompts

  • “/wispterm-diagnostics”

Requirements

  • Python 3
  • Node.js
  • PowerShell

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. If a user needs instructions, tell them to open a WispTerm AI Chat tab or
  2. Infer -ProblemType from the user's text. If it is unclear, use other and
  3. Run the script from this skill directory as the implementation detail

What it can do on your machine

Read from SKILL.md and the folder at commit 4168f80. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (PowerShell), which the agent can run.

    Shell commands in SKILL.md call:

    • ssh
    • python3
    • python
    • node
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use ssh and npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Wispterm Diagnostics loads about 3.1k tokens when it runs. Until then it costs about 104 tokens; SKILL.md has 1,135 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~104
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from xuzhougeng/wispterm at commit 4168f80, republished under its MIT licence (© xuzhougeng). 1,135 words, ~3,055 tokens.

Download SKILL.mdSave it as .claude/skills/wispterm-diagnostics/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
wispterm-diagnostics
description
Use when a user wants to report, troubleshoot, or collect context for a WispTerm issue, including crashes, rendering/DPI glitches, high CPU, keyboard/input bugs, selection/copy/scrolling, SSH/SCP failures, SSH image preview failures, HTML preview/browser panel failures, SSH disconnects such as ssh_packet_write_poll/eother, file explorer behavior, updater failures, or remote console behavior.

WispTerm Diagnostics

Overview

Generate a safe, copyable Markdown diagnostic report for users filing WispTerm issues. On Windows, installed WispTerm release packages include this plugin, so the preferred user-facing path is to ask the user to invoke $wispterm-diagnostics from WispTerm's AI Chat or Copilot and include their symptoms/reproduction steps. The skill then uses the bundled PowerShell script to collect WispTerm, Windows, OpenSSH, WebView2, bundled ConPTY, GPU, logs, and config details. Do not ask Windows users to find a source checkout first.

On macOS, there is no equivalent script yet — use the manual bash workflow in the macOS section below.

Windows Workflow

  1. If a user needs instructions, tell them to open a WispTerm AI Chat tab or Copilot sidebar and send a request like:
text
$wispterm-diagnostics
Problem type: ssh-disconnect
Symptom: SSH Profile disconnects after 5-10 minutes idle with "Connection reset".
Repro steps: connect to the saved SSH profile, leave it idle, then run ls.
What I already tried: external ssh.exe with ServerAliveInterval works.
  1. Infer -ProblemType from the user's text. If it is unclear, use other and keep the user's symptom/repro text in the generated issue draft.
  2. Run the script from this skill directory as the implementation detail:
powershell
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\collect_wispterm_diagnostics.ps1 -ProblemType "other"

Use pwsh instead of powershell only if Windows PowerShell is unavailable.

Recommended labels: startup/crash, rendering/DPI, high-cpu, keyboard/input, selection/copy/scrolling, SSH/SCP, ssh-image-preview, html-preview, ssh-disconnect, file explorer, WebView2/browser panel, updater, remote console, other.

  1. For rendering/DPI/multi-monitor glitch reports, first check whether render-diagnostic.log is already present. If not, ask the user to add wispterm-debug-render = true to their config (press Ctrl+, to open it), restart WispTerm, reproduce the glitch, then run the script. The log is written to %APPDATA%\wispterm\render-diagnostic.log.

    For high-cpu reports, run the script while WispTerm is exhibiting the high-CPU behavior so the 3-second CPU sample captures the real usage.

  2. For startup/crash reports, run the automated startup probe. It enables WISPTERM_RENDER_DIAGNOSTICS=1 only for the probe process, starts WispTerm with auto-update disabled, waits briefly, then closes/kills the process if it did not crash:

powershell
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\collect_wispterm_diagnostics.ps1 -ProblemType "startup/crash" -StartupProbe
  1. If the user is willing to reproduce a crash and can share a dump privately, enable Windows Error Reporting local dumps before the startup probe:
powershell
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\collect_wispterm_diagnostics.ps1 -ProblemType "startup/crash" -StartupProbe -EnableCrashDumps

This writes HKCU-only WER settings for wispterm.exe and reports the dump folder. Do not ask the user to attach .dmp files publicly; dumps may contain terminal text, environment fragments, tokens, paths, or other process memory.

  1. Return a GitHub-ready Markdown issue body. Include the user's symptom, reproduction steps, expected behavior, diagnostic report, and issue-specific next steps. Ask them to review it before posting publicly and remove secrets.

If WispTerm cannot start or the AI Agent is unavailable, use the script command above from the installed/extracted WispTerm folder that contains plugins\skills\wispterm-diagnostics. That is a fallback, not the normal FAQ path.

High-Signal Issue Workflows

Use these on top of the Windows report. The script intentionally avoids logging into remote hosts; ask the user to run the remote commands manually and paste only non-secret output.

SSH image preview fails, Markdown preview works
  1. Use the skill with this context:
text
$wispterm-diagnostics
Problem type: ssh-image-preview
Symptom: SSH image preview fails, but Markdown/text preview works.
Repro steps: ...
  1. Ask the user to confirm the SSH tab was opened from WispTerm's built-in SSH profile launcher. Remote previews require WispTerm SSH metadata; a tab where the user typed ssh user@host inside a local shell is treated as local and cannot use remote preview helpers.
  2. Ask for the file extension, approximate size, path shape (absolute, relative, contains spaces/CJK), and whether both Ctrl-click and File Explorer double-click fail.
  3. Ask them to Ctrl+Shift-click the same remote image to download it. If download also fails, investigate SSH/SCP/path metadata. If download works but preview fails, investigate image decode/rendering.
HTML preview fails
  1. Use the skill with this context:
text
$wispterm-diagnostics
Problem type: html-preview
Symptom: HTML preview or browser panel fails.
Repro steps: ...
  1. Identify the environment: local Windows, WSL, or SSH. For SSH, confirm it is a WispTerm SSH profile session, not a manually typed SSH tab.
  2. HTML preview serves the file's directory over HTTP so relative CSS/JS/images work. Ask the user to run this in the target environment:
bash
command -v python3 python node npx
python3 --version 2>/dev/null || true
python --version 2>/dev/null || true
node --version 2>/dev/null || true
npx --version 2>/dev/null || true
  1. Ask for the visible toast/error text, especially HTML server not reachable or HTML SSH tunnel failed. For SSH HTML, also ask whether normal loopback URLs printed by the remote host open through WispTerm.
Show full SKILL.md (487 more words)Show less
SSH disconnects (ssh_packet_write_poll, eother, idle reset)
  1. Use the skill with this context:
text
$wispterm-diagnostics
Problem type: ssh-disconnect
Symptom: SSH drops with ssh_packet_write_poll/eother or idle-time Connection reset.
Repro steps: ...
  1. Treat client_loop: ssh_packet_write_poll ... eother as a Windows OpenSSH network-write failure until evidence says otherwise. Do not anchor on unrelated VT warnings such as CSI t or mode 9001.
  2. If the disconnect happens only after 5-10 minutes idle with client_loop: send disconnect: Connection reset, test it as an idle-timeout/keepalive case. WispTerm SSH profile sessions are expected to launch OpenSSH with ServerAliveInterval=60 and ServerAliveCountMax=3; collect the exact WispTerm version/package and compare external OpenSSH with and without those options.
  3. Ask for these comparisons:
powershell
# Outside WispTerm, without keepalive:
ssh.exe -tt user@host

# Outside WispTerm, from Windows Terminal / cmd / PowerShell:
ssh.exe -vvv -tt -o StrictHostKeyChecking=accept-new -o ServerAliveInterval=60 -o ServerAliveCountMax=3 user@host

# In WispTerm config, then fully restart and retest:
windows-conpty = system

# If available:
wsl -- ssh -vvv -tt user@host

If Windows ssh.exe fails outside WispTerm, focus on Win32-OpenSSH, network, or server logs. If only bundled ConPTY fails, compare windows-conpty = system. If WispTerm fails with both ConPTY modes but external ssh.exe does not, then investigate WispTerm PTY input/output.

macOS Workflow

No automated script yet. Collect the following manually using bash and paste the results into a Markdown report:

bash
# WispTerm version and config path
/Applications/WispTerm.app/Contents/MacOS/wispterm --version
/Applications/WispTerm.app/Contents/MacOS/wispterm --show-config-path

# macOS version and hardware
sw_vers
uname -m
sysctl -n machdep.cpu.brand_string
sysctl -n hw.memsize

# GPU and connected monitors (resolution, DPI, color depth)
system_profiler SPDisplaysDataType 2>/dev/null | grep -E "Chipset|VRAM|Vendor|Metal|Resolution|Pixel Depth|Mirror|Color"

# Config file (sanitize API keys / passwords before pasting)
CONF="$HOME/Library/Application Support/wispterm/config"
[ -f "$CONF" ] && cat "$CONF" || echo "config not found"

# List files under wispterm data dir
ls -la "$HOME/Library/Application Support/wispterm/"

# Recent WispTerm crash reports (last 7 days)
find "$HOME/Library/Logs/DiagnosticReports" -name "WispTerm*" -mtime -7 2>/dev/null

# Render diagnostic log (if present)
# NOTE: the log only exists when wispterm-debug-render = true is set in config.
# For rendering/DPI issues: add that key, restart WispTerm, reproduce the glitch,
# then collect the log.
LOG="$HOME/Library/Application Support/wispterm/render-diagnostic.log"
[ -f "$LOG" ] && tail -80 "$LOG" || echo "render-diagnostic.log not found — add wispterm-debug-render = true to config and reproduce the issue first"

# CPU usage sample (run while WispTerm is showing high CPU)
pid=$(pgrep -x wispterm 2>/dev/null | head -1)
if [ -n "$pid" ]; then
  ps -p "$pid" -o pid,pcpu,pmem,rss,comm
  # macOS: sample over 3 seconds
  top -l 3 -pid "$pid" -stats pid,cpu,mem,time 2>/dev/null | tail -5
else
  echo "wispterm not running"
fi

Remind the user to review the output before pasting publicly: remove any API keys, SSH passwords, tokens, or other sensitive values the config may contain.

What The Report Covers (Windows script)

  • WispTerm version, executable path, package flavor, version.txt, config path, portable config presence, WebView2Loader.dll, bundled conpty.dll, and bundled OpenConsole.exe.
  • Windows edition, display version, build, architecture, locale, PowerShell, and current shell process.
  • ssh.exe / scp.exe path and version, plus whether WispTerm's ssh_hosts file exists and how many saved profiles it contains.
  • GPU and driver details, connected monitors with resolutions, WebView2 runtime version, and nearby WebView2Loader.dll presence.
  • wispterm.exe CPU sample (3 seconds) when -ProblemType "high-cpu" is used.
  • Startup/crash context: recent Windows Application Error / Windows Error Reporting entries for wispterm.exe, sanitized module/exception/offset fields, optional startup probe result, WER local dump configuration, and whether dump files exist.
  • %APPDATA%\wispterm\wispterm-debug.log and render-diagnostic.log presence and sanitized tail excerpts when available.
  • Relevant WispTerm files under %APPDATA%\wispterm.
  • A sanitized WispTerm config excerpt.
  • Failed diagnostic commands.

Privacy Rules

The script is intended to be safe to paste into a public GitHub issue. Do not add collection of public IP addresses, Wi-Fi passwords, SSH passwords, decoded SSH profile fields, SSH private keys, tokens, remote session keys, full environment variable dumps, browser data, process inventories, license keys, serial numbers, or unique hardware IDs.

The script redacts sensitive config values by default. It also redacts common local paths (%USERPROFILE%, %APPDATA%, %LOCALAPPDATA%, %TEMP%), computer name, Windows SIDs, remote session keys, token/password-like output, and non-WispTerm URLs. Still remind the user to review the final Markdown before posting.

Never paste raw Event Viewer XML when the script can summarize it; raw XML can include machine/user identifiers. Never paste .dmp crash dumps into a public issue.

Validation (Windows script)

When modifying the script, run on Windows:

powershell
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\collect_wispterm_diagnostics.ps1 -SelfTest

Then run a normal report generation command and a startup/crash report command without -EnableCrashDumps. The script must complete even when WispTerm, OpenSSH, WebView2, Event Viewer records, render diagnostics, or config files are missing; missing data should be reported as not found, not applicable, or unavailable.

© xuzhougeng, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (scripts) in plugins/skills/wispterm-diagnostics of xuzhougeng/wispterm.

  • SKILL.md
  • agents/openai.yaml
  • scripts/collect_wispterm_diagnostics.ps1

Open the folder on GitHubat commit 4168f80

Compare with similar skills

Wispterm Diagnostics next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Wispterm Diagnostics compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Wispterm Diagnostics this skillxuzhougeng/wispterm443—~3.1kAutomated safety check: PassMIT
RmuxHelvesec/rmux2.7k—~1.3kAutomated safety check: PassCustom licence
Environment SetupNorman-bury/research-writing-skill3.4k—~840Automated safety check: PassMIT
Remote Hostslibnativeapi/nativeapi162—~1.3kAutomated safety check: PassMIT
Local Asrysyecust/lecture-to-notes273—~1.6kAutomated safety check: PassCustom licence
Zipicokooo5km/Skills4U183—~2.2kAutomated safety check: PassMIT

Similar skills

  • Rmux

    Helvesec/rmux

    Guide for using RMUX with Claude Code, including the tmux-compatible CLI, agent automation waits, the typed SDK, browser web-share, and the rmux claude launcher.

    2.7k GitHub stars~1.3k tokensUpdated 2 mo ago
    Auto-check passed
  • Environment Setup

    Norman-bury/research-writing-skill

    A skill your agent uses when Python environment setup is needed for data visualization or conda installation is required

    3.4k GitHub stars~840 tokensUpdated 4 mo ago
    Data & AnalyticsAuto-check passed
  • Remote Hosts

    libnativeapi/nativeapi

    Build, run, and GUI-test on another machine over SSH — the user's Windows laptop today, Linux or other macOS machines tomorrow — with one symmetric CLI for every OS: push scripts, run them either in…

    162 GitHub stars~1.3k tokensUpdated yesterday
    MobileAuto-check passed
  • Local Asr

    ysyecust/lecture-to-notes

    把本地长视频/音频转写成文字稿 + 可选字幕,纯本地(不上传云端),用 sherpa-onnx X-ASR Zipformer transducer 模型(int8 量化、中英双语、自动标点)。已在 macOS Apple Silicon(int8 + AMX,~100× 实时)、Linux ARM64(CPU,~32× 实时)与 Windows(PowerShell…

    273 GitHub stars~1.6k tokensUpdated 6 days ago
    AI & LLM EngineeringAuto-check passed
  • Zipic

    okooo5km/Skills4U

    Local image compression and Zipic-app expert for macOS and native Windows.

    183 GitHub stars~2.2k tokensUpdated 2 days ago
    Media & CreativeAuto-check passed
  • Local Tools

    freestylefly/wesight

    Access local system resources including Calendar on macOS and Windows.

    944 GitHub stars~3.4k tokensUpdated 8 days ago
    Auto-check passed

More from xuzhougeng/wispterm

  • Inspect Computer Config

    xuzhougeng/wispterm

    A skill your agent uses when the user asks to inspect, summarize, audit, compare, or troubleshoot this computer's hardware, operating system, CPU, memory, GPU, disk, or local runtime configuration.

    443 GitHub stars~479 tokensUpdated 3 days ago
    Auto-check passed
  • Tbtools

    xuzhougeng/wispterm

    A skill your agent uses when the user asks about TBtools, TBtools-II, TBtools RPC API, TBtools CLI, or bioinformatics operations available through TBtools such as sequence manipulation, BLAST…

    443 GitHub stars~2.3k tokensUpdated 3 days ago
    Auto-check passed
  • Wispterm Notify Setup

    xuzhougeng/wispterm

    A skill your agent uses when the user wants to install, repair, or re-apply WispTerm notification reminders (Claude Code Stop + Notification, and Codex turn-complete) in a local…

    443 GitHub stars~1.3k tokensUpdated 3 days ago
    Auto-check passed

Works with

Questions about Wispterm Diagnostics

What does Wispterm Diagnostics do?

A skill your agent uses when a user wants to report, troubleshoot, or collect context for a WispTerm issue, including crashes, rendering/DPI glitches, high CPU, keyboard/input bugs…. Wispterm Diagnostics is an agent skill from xuzhougeng/wispterm. Use when a user wants to report, troubleshoot, or collect context for a WispTerm issue, including crashes, rendering/DPI glitches, high CPU, keyboard/input bugs, selection/copy/scrolling, SSH/SCP failures, SSH image preview failures, HTML preview/browser panel failures, SSH disconnects such as sshpacketwritepoll/eother, file explorer behavior, updater failures, or remote console behavior.

When should I use Wispterm Diagnostics?

Wispterm Diagnostics fits situations like: A user wants to report; collect context for a WispTerm issue; including crashes; rendering/DPI glitches.

How do I install Wispterm Diagnostics in Claude Code?

Run `npx skills add xuzhougeng/wispterm --skill wispterm-diagnostics -a claude-code`. Or copy the skill folder (plugins/skills/wispterm-diagnostics in xuzhougeng/wispterm) into .claude/skills/wispterm-diagnostics in your project. Claude Code loads it when a task matches its description.

How do I install Wispterm Diagnostics in Codex?

Run `npx skills add xuzhougeng/wispterm --skill wispterm-diagnostics -a codex`. Or copy the skill folder (plugins/skills/wispterm-diagnostics in xuzhougeng/wispterm) into .agents/skills/wispterm-diagnostics in your project. Codex loads it when a task matches its description.

Can I use Wispterm Diagnostics in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add xuzhougeng/wispterm --skill wispterm-diagnostics -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wispterm-diagnostics, .gemini/skills/wispterm-diagnostics, .github/skills/wispterm-diagnostics and .opencode/skills/wispterm-diagnostics in your project.

What does Wispterm Diagnostics need to run?

Going by SKILL.md and its folder, Wispterm Diagnostics needs PowerShell for the scripts in its folder and the command-line tools its instructions call (ssh, python3, python, node and npx). Our summary lists: Python 3; Node.js; PowerShell.

Does Wispterm Diagnostics access the network?

SKILL.md contains no URLs. Its commands use ssh and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Wispterm Diagnostics safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Wispterm Diagnostics use?

Wispterm Diagnostics is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Wispterm Diagnostics use?

About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Wispterm Diagnostics?

Skills that share tags, products or a category with Wispterm Diagnostics: Rmux (Helvesec/rmux, 2.7k stars), Environment Setup (Norman-bury/research-writing-skill, 3.4k stars), Remote Hosts (libnativeapi/nativeapi, 162 stars) and Local Asr (ysyecust/lecture-to-notes, 273 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Wispterm Diagnostics?

xuzhougeng (a GitHub user) maintains it in xuzhougeng/wispterm, which has 443 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 6, 2026.

Source: xuzhougeng/wispterm on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.