skit

Troubleshooting & FAQ

Known quirks, their escape hatches, and short answers to common questions.

CJK / IME input broken in the TUI

Symptom: composing Chinese/Japanese/Korean text misbehaves — candidate digits arrive as literal numbers, Enter confirms nothing, Caps Lock types "A" (seen on iTerm2 3.6.x on macOS).

Cause: the terminal's kitty-keyboard-protocol handling conflicts with the OS input method.

What skit does: disables the protocol by default (TEXTUAL_DISABLE_KITTY_KEY=1). Your own value wins — set TEXTUAL_DISABLE_KITTY_KEY=0 to re-enable it (iTerm2 fixed the underlying issue in 3.7.0beta6).

Shell scripts don't run on Windows

Shell entries need bash: skit looks on PATH, then at the shell.bash_path config key, then refuses with exit 126 and a hint — it never silently reroutes through WSL. PowerShell entries need pwsh (or powershell.exe).

Downloads fail in mainland China

Point each ecosystem at a domestic mirror — see Configuration for the mirror.* keys. For the very first uv tool install skit-cli (before skit exists to help), export UV_DEFAULT_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple for that one command.

FAQ

Does skit modify my scripts? Only the [tool.skit] comment block, and only in skit's stored copy (reference entries are never written at all). Edits preserve the file's own line endings — CRLF included — and non-UTF-8 bytes. The single exception is the opt-in skit params --normalize NAME (shell only), which rewrites one NAME=value into ${NAME:-value} in the stored copy, with your consent.

I edited a constant in my script — why did the run use the old value? It won't, since 0.4.0: defaults are read from the script's current source on every run, not from a manage-time cache. If definitions look stale, skit params NAME --resync refreshes them.

How do I pass an empty string? Clear the prefilled field in the launch menu, or --set NAME=. Empty is delivered as a real '' where the type supports it — see Empty means empty.

I set -- --model opus once — does it stick? Yes: every entry remembers its last -- tail and replays it on argument-less runs (with a stderr note). --forget-args clears it; --raw runs clean.

Is deno sandboxing my script? No. When deno is the resolved runner, skit passes --allow-all so the same script behaves identically under deno, bun, and node. skit is a launcher, not a sandbox.

Are secrets safe in a prompt? No — a prompt is not a secrets channel. Marking a placeholder secret keeps skit from persisting it and gets you a warning before a real run, but the rendered text still lands in the receiving agent's own session logs.

Where is my data, and what does uninstalling remove? skit doctor prints the resolved library path. uv tool uninstall skit-cli removes skit and its PATH shim but deliberately leaves your library, config, and presets — reinstall and you're back. skit never writes to your PATH, shell profile, or global uv config.

What Python / runtimes does skit need? Python 3.12+ for skit itself; uv (tested against 0.11.26 — skit offers to download a pinned, checksum-verified private copy if you have none). For JS/TS you supply deno, bun, or node — skit never installs a JS runtime.

On this page