Terminal Opener
SkillDev toolsterminal-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.
No other account needed.
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
- Have Node available to run skills/terminal-opener/scripts/open-terminal.js, and have WezTerm installed as the supported terminal.
- Run the script without --launch and with --json to inspect the dry-run plan for your executable, arguments, and working directory.
- Run --detect --json without a command to check terminal availability and follow the returned action if the adapter is missing or unsupported.
- After reviewing the argv, run again with --launch and --cwd set to an absolute host path, passing the executable and its arguments after --.
- 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