interactive-shell
Runs interactive terminal programs like dev servers and TUIs. Use for direct user-controlled CLI processes.
Install
mkdir -p .claude/skills/interactive-shell && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/18772" && unzip -o skill.zip -d .claude/skills/interactive-shell && rm skill.zipInstalls to .claude/skills/interactive-shell
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
dev server, TUI, REPL, DB shell, 로그처럼 사용자 제어나 장시간 실행이 필요한 터미널 작업에 사용한다. AI 작업 위임에는 subagent를 사용한다.Key capabilities
- →Start development servers (e.g., `pnpm dev`, `npm run dev`)
- →Display Terminal User Interfaces (TUIs) like `lazygit` or `htop`
- →Run Read-Eval-Print Loops (REPLs) or database shells (e.g., `python`, `psql`)
- →Tail application logs (`tail -f ...`)
- →Manage the lifecycle of long-running processes
- →Send input to interactive processes
How it works
The skill executes interactive terminal commands, providing modes for direct user interaction, hands-free monitoring of long-running processes, or background dispatch. It captures and renders terminal output.
Inputs & outputs
When to use interactive-shell
- →Start local development servers
- →Run interactive CLI tools like lazygit
- →Open a database REPL like psql
- →Tail application logs
About this skill
Interactive Shell (Project-local Skill)
Last verified: 2026-04-03
Local note: this project vendors the extension under
extensions/interactive-shell/. Treat it as a repo-local skill/extension, not a separately installed package.
What this skill is for
In this project, interactive_shell is mainly for:
- 개발 서버 실행 (
pnpm dev,npm run dev,vite,next dev, etc.) - TUI 보여주기 (
lazygit,htop, DB shell, interactive CLI menus) - REPL / 콘솔 / 로그 tail 보기
- 일반 bash로 돌리면 불편하거나 깨지는 인터랙티브 프로그램 실행
What this skill is NOT for
Do not frame interactive_shell as a subagent/delegation tool in this repo.
If the goal is:
- another coding agent doing a task,
- structured delegation,
- hidden/background AI worker execution,
use the subagent tool instead.
interactive_shell here is for terminal UX and process supervision, not subagent orchestration.
Preferred mode by use case
1) Interactive — for TUI / direct user interaction
Use when the user should directly see and possibly control the program.
Good for:
lazygithtoppythonnodepsqlsqlite3git rebase -i- any curses/full-screen TUI
interactive_shell({ command: 'lazygit' })
interactive_shell({ command: 'psql -d mydb' })
interactive_shell({ command: 'python' })
This is the default mode.
2) Hands-Free — for dev servers you want to watch
Use when starting a long-running process and then checking its output later.
Good for:
pnpm devnpm run devvitenext devdocker compose uptail -f ...
interactive_shell({
command: 'pnpm dev',
mode: 'hands-free',
reason: 'Run local dev server'
})
Then later:
interactive_shell({ sessionId: 'calm-reef' })
interactive_shell({ sessionId: 'calm-reef', outputLines: 50 })
interactive_shell({ sessionId: 'calm-reef', kill: true })
Use this as the default for dev servers when you want the overlay visible and the process queryable.
3) Dispatch / background — only for process lifecycle, not delegation
This can still be useful for headless long-running processes, but do not describe it as subagent delegation.
Good for:
- starting a server without keeping the overlay open
- launching a log tail or watcher in background
- starting a process and getting notified when it exits
interactive_shell({
command: 'pnpm dev',
mode: 'dispatch',
background: true,
reason: 'Run local dev server headlessly'
})
Use this for process management, not “ask another agent to do work”.
Common workflows
A. Start a dev server and inspect logs
interactive_shell({
command: 'pnpm dev',
mode: 'hands-free',
reason: 'Frontend dev server'
})
Check output later:
interactive_shell({ sessionId: 'calm-reef' })
interactive_shell({ sessionId: 'calm-reef', outputLines: 100, outputMaxChars: 30000 })
Stop it:
interactive_shell({ sessionId: 'calm-reef', kill: true })
B. Open a TUI for the user to inspect
interactive_shell({ command: 'lazygit' })
interactive_shell({ command: 'htop' })
interactive_shell({ command: 'git rebase -i HEAD~3' })
Use interactive mode here so the user can watch and take over naturally.
C. Open a database shell / REPL
interactive_shell({ command: 'psql -d app' })
interactive_shell({ command: 'sqlite3 dev.db' })
interactive_shell({ command: 'node' })
interactive_shell({ command: 'python' })
Again, prefer interactive mode unless there is a strong reason to poll from the agent side.
D. Reattach to a backgrounded process
interactive_shell({ listBackground: true })
interactive_shell({ attach: 'calm-reef' })
interactive_shell({ dismissBackground: 'calm-reef' })
Querying output
Status queries return rendered terminal output (what is actually on screen), not raw PTY bytes.
Defaults:
outputLines: 20outputMaxChars: 5KB
Useful patterns:
interactive_shell({ sessionId: 'calm-reef' })
interactive_shell({ sessionId: 'calm-reef', outputLines: 50 })
interactive_shell({ sessionId: 'calm-reef', outputLines: 100, outputMaxChars: 30000 })
interactive_shell({ sessionId: 'calm-reef', incremental: true, outputLines: 50 })
Use incremental: true when reading long scrollback progressively.
Sending input
interactive_shell({ sessionId: 'calm-reef', input: '/help\n' })
interactive_shell({ sessionId: 'calm-reef', inputKeys: ['ctrl+c'] })
interactive_shell({ sessionId: 'calm-reef', inputPaste: 'line1\nline2\nline3' })
interactive_shell({ sessionId: 'calm-reef', input: 'y', inputKeys: ['enter'] })
Common named keys
up,down,left,rightenterescapetab,shift+tabbackspacectrl+c,ctrl+d,ctrl+z
Background session management
interactive_shell({ sessionId: 'calm-reef', background: true })
interactive_shell({ listBackground: true })
interactive_shell({ attach: 'calm-reef' })
interactive_shell({ attach: 'calm-reef', mode: 'hands-free' })
interactive_shell({ attach: 'calm-reef', mode: 'dispatch' })
interactive_shell({ dismissBackground: true })
interactive_shell({ dismissBackground: 'calm-reef' })
Safe TUI capture
Never use plain bash for a truly interactive/TUI app when you actually need terminal behavior.
If you only need a quick capture from a TUI-ish command that does not exit cleanly, use interactive_shell with a timeout:
interactive_shell({
command: 'pi --help',
mode: 'hands-free',
timeout: 5000
})
Good for:
--helpoutput from TUI apps- commands that animate or do terminal detection
- short-lived inspection of otherwise interactive commands
Practical guidance for this repo
Prefer interactive_shell when:
- you need to show a terminal UI
- you need to start/monitor a dev server
- you need to interact with a REPL or shell
- you want attach/background/reattach behavior
Prefer bash when:
- command is simple and non-interactive
- you only need stdout/stderr once
- no overlay / no PTY semantics are needed
Prefer subagent when:
- the task is really delegation to another coding agent
- you want structured worker/reviewer flows
- you want hidden/background AI execution rather than terminal supervision
Recommended defaults
Dev server
interactive_shell({
command: 'pnpm dev',
mode: 'hands-free',
reason: 'Run dev server'
})
TUI tool
interactive_shell({ command: 'lazygit' })
Background server
interactive_shell({
command: 'pnpm dev',
mode: 'dispatch',
background: true,
reason: 'Run dev server in background'
})
Stop a running session
interactive_shell({ sessionId: 'calm-reef', kill: true })
When not to use it
- →When the task is delegation to another coding agent
- →When structured delegation or background AI worker execution is needed
- →When the command is simple and non-interactive, and only stdout/stderr is needed once
Limitations
- →Not for subagent orchestration or delegation to another coding agent
- →Does not provide structured delegation or hidden/background AI worker execution
- →Status queries return rendered terminal output, not raw PTY bytes
How it compares
This skill is designed for interactive terminal UX and process supervision, allowing direct user control and monitoring of long-running processes, unlike simple `bash` execution or subagent delegation.
Compared to similar skills
interactive-shell side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| interactive-shell (this skill) | 0 | 15d | No flags | Intermediate |
| makefile-dev-workflow | 0 | 5mo | Review | Beginner |
| senior-backend | 14 | 7mo | Review | Advanced |
| pagination | 1 | 5mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
makefile-dev-workflow
raphaelmansuy
Unified development workflow for EdgeQuake using Makefile commands. Use when starting services, running tests, or managing the full development stack (database, backend, frontend). Provides simplified alternatives to raw cargo/npm commands.
senior-backend
davila7
Comprehensive backend development skill for building scalable backend systems using NodeJS, Express, Go, Python, Postgres, GraphQL, REST APIs. Includes API scaffolding, database optimization, security implementation, and performance tuning. Use when designing APIs, optimizing database queries, implementing business logic, handling authentication/authorization, or reviewing backend code.
pagination
dadbodgeoff
Implement cursor-based and offset pagination for APIs. Covers efficient database queries, stable sorting, and pagination metadata.
moai-domain-backend
modu-ai
Backend development specialist covering API design, database integration, microservices architecture, and modern backend patterns.
databricks-expert-agent
databricks-solutions
Transforms the assistant into a Senior Databricks Solutions Architect Agent that designs, implements, and reviews production-grade Databricks solutions following official best practices. Enforces Unity Catalog governance, Delta Medallion architecture, DLT expectations, Predictive Optimization, autom
environment-setup
studentdotai
Complete setup for uv, GDAL 3.10.3, PostGIS, and all project dependencies. Use when setting up development environment, installing GDAL, or configuring PostGIS backend.