AgentSkillsCN

terminal

在持久、有状态的 VT100 终端会话中执行 shell 命令。何时:用户需要“运行命令”、“执行 shell”、“构建项目”、“运行测试”、“部署”、系统管理。何时不:简单的文件操作(使用 fs_* 工具)、读取已知文件(使用 fs_read_file)。

SKILL.md
--- frontmatter
name: terminal
description: >
  Execute shell commands in persistent, stateful VT100 terminal sessions.
  WHEN: User needs to "run a command", "execute shell", "build project", "run tests", "deploy", system administration.
  WHEN NOT: Simple file operations (use fs_* tools), reading known files (use fs_read_file).
version: 0.1.0

terminal - Shell Command Execution

Core Concept

mcp__plugin_kg_kodegen__terminal executes shell commands in persistent VT100 terminal sessions. Terminals maintain environment variables, working directory, and shell state across commands. Use different terminal numbers for parallel work.

Actions

ActionDescriptionRequired Parameters
EXECExecute command (default)command
READGet current buffer snapshotNone
LISTShow all active terminalsNone
KILLGracefully shutdown terminalNone

Key Parameters

ParameterTypeDefaultDescription
actionstring"EXEC"Action to perform
terminalnumber0Terminal instance (0, 1, 2...)
commandstringnullCommand to execute (EXEC only)
await_completion_msnumber300000Max wait time (5 min default)
clearbooleantrueClear buffer before command
tailnumber2000Max output lines to return

Usage Examples

Execute Command (default action)

json
{ "command": "ls -la" }

Execute in Specific Terminal

json
{ "terminal": 1, "command": "cargo build --release" }

Background Execution (fire-and-forget)

json
{
  "command": "npm run build",
  "await_completion_ms": 0
}

Execute with Timeout

json
{
  "command": "cargo test",
  "await_completion_ms": 60000
}

Read Current Buffer

json
{ "action": "READ", "terminal": 0 }

List All Terminals

json
{ "action": "LIST" }

Kill Terminal

json
{ "action": "KILL", "terminal": 0 }

Response Format

json
{
  "terminal": 0,
  "exit_code": 0,
  "cwd": "/project/path",
  "duration_ms": 1234,
  "completed": true
}

Parallel Work Pattern

Use different terminal numbers for concurrent tasks:

json
// Terminal 0: Build
{ "terminal": 0, "command": "cargo build" }

// Terminal 1: Tests (parallel)
{ "terminal": 1, "command": "cargo test" }

// Terminal 2: Watch logs
{ "terminal": 2, "command": "tail -f app.log" }

Background Execution

For long-running commands:

  1. Fire-and-forget: await_completion_ms: 0
  2. Check progress: { "action": "READ", "terminal": N }
  3. Wait with timeout: If timeout occurs, command continues in background

Important Notes

  • Persistent sessions: Environment and working directory preserved
  • VT100 emulation: Actual rendered terminal output, not raw bytes
  • Automatic cleanup: Terminals cleaned up on connection close
  • State preservation: cd commands persist across calls

Remember

  • Terminals are numbered 0, 1, 2... - use different numbers for parallel work
  • Default action is EXEC - just provide command
  • Use await_completion_ms: 0 for background tasks
  • Use action: "READ" to check on background commands
  • Working directory persists - cd works across commands
  • For simple file operations, prefer fs_* tools (faster, safer)