Terminal Opener
SkillDev toolsterminal-opener is a skill that lets an AI agent open an executable and its argument array in a visible terminal window on your computer. It builds a reusable, shell-free launch plan so the command runs as separate process entries rather than a shell string. You can inspect a dry-run JSON plan before anything opens, and it can detect whether a supported terminal exists.
Use Terminal Opener in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Terminal Opener and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Terminal Opener skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
No other account needed.
Make sure the executable you want to launch and its arguments are known.
What your AI can do with it
- Open an executable with its argument array in a visible terminal window
- Show a dry-run JSON plan of the exact launch before opening anything
- Detect whether a supported terminal exists on the machine
- Use a detached fallback when no supported terminal is available
- Run a standalone recovery mode that skips user terminal configuration
Getting started
- Make sure the executable you want to launch and its arguments are known.
- Add the skill to your agent so it can build a launch plan.
- Ask the agent for a dry-run JSON plan and review the executable and arguments.
- Confirm the plan so the agent opens the command in a visible terminal window.
- If no supported terminal is detected, let the skill use its fallback or recovery mode.
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
- 270k
- Forks
- 40k
- Last commit
- Sep 2026
Questions
- Does it open the command through a shell?
- No. It keeps the command as separate process entries instead of a shell string, so the executable and its argument array are launched directly.
- Can I see what will be launched before it opens?
- Yes. The skill can produce a dry-run JSON plan showing the exact launch, so you can inspect the executable and arguments before anything opens.
- What happens if no supported terminal is found?
- The skill detects whether a supported terminal exists and can use a detached fallback or a standalone recovery mode that skips user terminal configuration.
Advanced
- Item type
- skill
- Key
terminal-opener- Source
- github.com/affaan-m/ecc