ワンクリックで
interactive-shell
dev server, TUI, REPL, DB shell, 로그처럼 사용자 제어나 장시간 실행이 필요한 터미널 작업에 사용한다. AI 작업 위임에는 subagent를 사용한다.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
dev server, TUI, REPL, DB shell, 로그처럼 사용자 제어나 장시간 실행이 필요한 터미널 작업에 사용한다. AI 작업 위임에는 subagent를 사용한다.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
기존 user/project 메모리의 중복·노후 항목을 검토, 통합, 정리할 때 사용한다. 사용자 확인 없이 메모리를 삭제하지 않는다.
서브에이전트·스킬 사용 통계와 미사용 항목을 분석해 인사이트를 도출할 때 사용한다.
코딩·조사 작업을 별도 Picky Pickle에 위임할 때 사용한다. worktree 준비, 지침 작성, Pickle 생성·후속 관리를 수행한다.
Context7 CLI(`ctx7`)로 라이브러리·프레임워크 공식 문서와 API 예시를 조회할 때 사용한다.
새 기능, 큰 변경, 아키텍처 결정 전에 구현보다 설계를 먼저 확정할 때 사용한다.
장기·병렬·대규모 작업을 서브에이전트로 분해·실행·검증하거나 동적 workflow를 설계할 때 사용한다.
| name | interactive-shell |
| description | dev server, TUI, REPL, DB shell, 로그처럼 사용자 제어나 장시간 실행이 필요한 터미널 작업에 사용한다. AI 작업 위임에는 subagent를 사용한다. |
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.
In this project, interactive_shell is mainly for:
pnpm dev, npm run dev, vite, next dev, etc.)lazygit, htop, DB shell, interactive CLI menus)Do not frame interactive_shell as a subagent/delegation tool in this repo.
If the goal is:
use the subagent tool instead.
interactive_shell here is for terminal UX and process supervision, not subagent orchestration.
Use when the user should directly see and possibly control the program.
Good for:
lazygithtoppythonnodepsqlsqlite3git rebase -iinteractive_shell({ command: 'lazygit' })
interactive_shell({ command: 'psql -d mydb' })
interactive_shell({ command: 'python' })
This is the default mode.
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.
This can still be useful for headless long-running processes, but do not describe it as subagent delegation.
Good for:
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”.
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 })
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.
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.
interactive_shell({ listBackground: true })
interactive_shell({ attach: 'calm-reef' })
interactive_shell({ dismissBackground: 'calm-reef' })
Status queries return rendered terminal output (what is actually on screen), not raw PTY bytes.
Defaults:
outputLines: 20outputMaxChars: 5KBUseful 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.
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'] })
up, down, left, rightenterescapetab, shift+tabbackspacectrl+c, ctrl+d, ctrl+zinteractive_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' })
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:
--help output from TUI appsinteractive_shell when:bash when:subagent when:interactive_shell({
command: 'pnpm dev',
mode: 'hands-free',
reason: 'Run dev server'
})
interactive_shell({ command: 'lazygit' })
interactive_shell({
command: 'pnpm dev',
mode: 'dispatch',
background: true,
reason: 'Run dev server in background'
})
interactive_shell({ sessionId: 'calm-reef', kill: true })