Terminal Opener

SkillDev tools

terminal-opener is an agent skill that opens an executable and its argument array in a visible terminal window. It builds a reusable, shell-free launch plan and, by default, returns a dry-run JSON plan instead of launching, so the exact

Available today. Use it from your connected AI after setup.

Have Node available to run skills/terminal-opener/scripts/open-terminal.js, and have WezTerm installed as the supported terminal.

Then ask your AI: use the Terminal Opener skill

What your AI can do with it

  • Launch an executable plus its argv in a new visible terminal window with --launch
  • Produce a dry-run JSON plan showing command, cwd, adapter, and fallback without opening a
  • Probe terminal availability with --detect --json and follow the returned action
  • Fall back to a detached wezterm start process when the mux path fails, reporting muxFailur
  • Recover with --recover or --standalone, skipping all user terminal configuration
  • Keep every spawn on shell:false so arguments stay separate process entries

Getting started

  1. Have Node available to run skills/terminal-opener/scripts/open-terminal.js, and have WezTerm installed as the supported terminal.
  2. Run the script without --launch and with --json to inspect the dry-run plan for your executable, arguments, and working directory.
  3. Run --detect --json without a command to check terminal availability and follow the returned action if the adapter is missing or unsupported.
  4. After reviewing the argv, run again with --launch and --cwd set to an absolute host path, passing the executable and its arguments after --.
  5. If user configuration or mux state interferes, add --recover or --standalone to start a detached WezTerm process that skips terminal configuration.

What this skill tells your AI

The instructions your AI receives, as published by affaan-m/ecc in skills/terminal-opener/SKILL.md and read by ahel’s review.

Use scripts/open-terminal.js to preserve an executable and every argument as separate process entries. Never interpolate a shell command string. Keep every spawn on shell: false. Default to a non-launching plan. Use --launch only after the user explicitly requests a real window and the argv has been reviewed. The launched process inherits the full environment of the calling process, including secret-bearing variables. The launcher does not filter the environment. Run it from a shell whose environment is safe to expose to the target command.

Launch a command

Pass launcher options before --, then pass exactly one executable followed by its argument array:

node skills/terminal-opener/scripts/open-terminal.js \
  --launch \
  --cwd /absolute/host/path \
  -- ssh -t example.test command-with-arguments

Run normal mode first. Let WezTerm try its mux with a new window, then let the launcher fall back to a detached wezterm start process if the mux is not available. When fallback is used, read muxFailure from JSON output (or the human-readable failure line) to diagnose why the mux path failed.

Recover from terminal configuration

Add --recover or --standalone when user configuration or mux state may interfere with the requested command. Start a detached WezTerm process with:

--skip-config start --always-new-process

Expect recovery mode to skip all user terminal configuration intentionally.

Inspect before launch

Omit --launch (or add --dry-run) and add --json to inspect the exact executable, argv, working directory, terminal adapter, primary launch, and fallback without opening a window. Treat the JSON plan as the composition boundary for callers.

Run --detect --json without a command to probe terminal availability. Follow the returned action when the adapter is missing or unsupported. Use WezTerm for the current adapter; treat other requested terminals as unsupported plans, not as commands to execute.

Signals

GitHub stars
268k
Forks
40k
Last commit
Sep 2026

Questions

Does it launch a window by default?
No. By default it produces a dry-run JSON plan instead of launching. Add --launch only after the argv has been reviewed and a real window is explicitly requested.
Which terminal does it use?
WezTerm is the current adapter. Other requested terminals are treated as unsupported plans, not commands to execute.
Advanced
Item type
skill
Key
terminal-opener
Source
github.com/affaan-m/ecc