scute-pty-e2e
Run agentic PTY smoke tests for scute (shell integration, output channels, and TUI) with scripted scenarios and log capture.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Run agentic PTY smoke tests for scute (shell integration, output channels, and TUI) with scripted scenarios and log capture.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | scute-pty-e2e |
| description | Run agentic PTY smoke tests for scute (shell integration, output channels, and TUI) with scripted scenarios and log capture. |
| references | [] |
This skill runs PTY-based smoke scenarios that exercise real shell integration, output channels, and the TUI. Use it when you need fast, agentic feedback on the shell/TUI experience.
python3bunOPENAI_API_KEY) or a local provider.scripts/agent/pty_runner.pyscripts/agent/scenarios/suggest-stdout.json — suggest via CLI, stdout outputscripts/agent/scenarios/suggest-keybinding.json — suggest via Alt+G keybindingscripts/agent/scenarios/explain-stdout.json — explain via CLI, stdout outputscripts/agent/scenarios/explain-keybinding.json — Ctrl+E → choose menu → explain actionscripts/agent/scenarios/build-stdout.json — build TUI, submit with Enterscripts/agent/scenarios/generate-stdout.json — generate via CLI, stdout outputscripts/agent/scenarios/clipboard-file.json — suggest to clipboard, verify filescripts/agent/scenarios/choose-cancel.json — choose menu opens, cancel with qscripts/agent/scenarios/choose-explain.json — choose menu → select explainscripts/agent/scenarios/choose-keybinding.json — Ctrl+E → choose menu → cancelscripts/agent/run-all — runs all granular scenarios, prints pass/fail summaryscripts/agent/run-one <name> — runs a single scenario by nameconfigs/agent-pty.yml/tmp/scute-pty-<scenario-name>.log/tmp/scute-clipboard.txtbash (clean shell: --noprofile --norc)configs/agent-pty.ymlscute-test$ /tmp/scute-clipboard.txt# Run ALL granular scenarios and get a pass/fail summary
scripts/agent/run-all
# Run a single scenario by name
scripts/agent/run-one suggest-stdout
scripts/agent/run-one explain-stdout
scripts/agent/run-one build-stdout
scripts/agent/run-one generate-stdout
scripts/agent/run-one clipboard-file
scripts/agent/run-one suggest-keybinding
scripts/agent/run-one explain-keybinding
scripts/agent/run-one choose-cancel
scripts/agent/run-one choose-explain
scripts/agent/run-one choose-keybinding
Override shell/config:
scripts/agent/run-one suggest-stdout --shell zsh
scripts/agent/run-all --shell zsh --config configs/agent-pty.yml
Suppress step-by-step output:
scripts/agent/run-all --quiet
Each scenario is a JSON file with a prompt string and a steps array. Available step types:
| Step | JSON Syntax | Description |
|---|---|---|
send_line | {"send_line": "command"} | Send text + CR (submits the line) |
send_text | {"send_text": "text"} | Send text without submitting |
send_keys | {"send_keys": ["CTRL+E"]} | Send special key sequences |
sleep | {"sleep": 1.5} | Wait a fixed duration (seconds) |
wait_for_prompt | {"wait_for_prompt": true, "timeout": 10} | Wait for prompt in NEW output only; resets buffer after match |
wait_for_text | {"wait_for_text": "expected", "timeout": 10} | Wait for specific text in output |
assert_output_contains | {"assert_output_contains": "text"} | Assert buffer contains text |
assert_output_not_contains | {"assert_output_not_contains": "text"} | Assert buffer does NOT contain text |
assert_file_exists | {"assert_file_exists": "/path"} | Assert file exists on disk |
assert_file_contains | {"assert_file_contains": "/path", "expected": "text"} | Assert file contains text |
clear_buffer | {"clear_buffer": true} | Reset the output buffer to empty |
drain | {"drain": true, "idle_ms": 200} | Read until output settles (no data for N ms) |
delete_file | {"delete_file": "/path"} | Delete a file (cleanup before test) |
All string values in steps support {variable} interpolation:
{scute_bin} — absolute path to the scute binary{config} — absolute path to the config file{shell} — shell name (bash/zsh/sh){prompt} — the prompt string from the scenarioENTER, TAB, ESC, CTRL+A, CTRL+C, CTRL+D, CTRL+E, CTRL+G, CTRL+U, UP, DOWN, LEFT, RIGHT, BACKSPACE, ALT+G, HOME, END
run-all and run-one exit with code 0 on pass, 1 on failure. Assertion failures are printed to stderr./tmp/scute-pty-<name>.log to inspect raw terminal output./tmp/scute-clipboard.txt for clipboard channel verification.Use these with any agent that can run shell commands and read files:
Run scripts/agent/run-one suggest-stdout. If it fails, read /tmp/scute-pty-suggest-stdout.log (last 120 lines) and diagnose the issue.
Run scripts/agent/run-one explain-stdout. If it fails, read /tmp/scute-pty-explain-stdout.log and summarize what went wrong.
Run scripts/agent/run-one clipboard-file. If it passes, the clipboard output channel works. If it fails, check /tmp/scute-pty-clipboard-file.log and /tmp/scute-clipboard.txt.
Run scripts/agent/run-all and report the pass/fail summary. For any failures, include the last 120 lines of the corresponding log file.
--timeout (seconds) on the command line.configs/agent-pty.yml is used (not a different config).build-stdout scenario sends ENTER after 2s — increase the sleep if the TUI is slow to render.scute init ran successfully by reading the log after the init step.