Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
Instruções da origem · Visualização somente leitura
name
repl-interaction
description
Patterns for controlling REPL sessions (Python, IPython, Node.js, Ruby, etc.) via terminalcp
REPL Interaction with terminalcp
This skill provides comprehensive patterns for managing and automating REPL (Read-Eval-Print Loop) sessions using terminalcp MCP. It enables AI agents to execute code interactively, explore APIs, and prototype solutions in real-time.
Overview
terminalcp enables:
Interactive code execution in multiple languages
Real-time output capture and parsing
Persistent REPL sessions for stateful exploration
Parallel REPL management for multi-language projects
History and context preservation
The MCP server runs via npx @mariozechner/terminalcp@latest --mcp and provides full terminal emulation for REPL interaction.
// Start multi-line code{"action":"stdin","id":"python-repl","data":"def greet(name):\r"}{"action":"stdin","id":"python-repl","data":" return f'Hello, {name}!'\r"}// Empty line to finish{"action":"stdin","id":"python-repl","data":"\r"}// Call the function{"action":"stdin","id":"python-repl","data":"greet('Alice')\r"}
Capturing REPL Output
{"action":"stdout","id":"python-repl"}
Returns the current terminal state including all executed code and output.
Returns only new output since last check, useful for monitoring long-running computations.
IPython Advanced Features
Magic Commands
// Time execution{"action":"stdin","id":"ipython-repl","data":"%timeit sum(range(1000))\r"}// Run external script{"action":"stdin","id":"ipython-repl","data":"%run script.py\r"}// Show history{"action":"stdin","id":"ipython-repl","data":"%history\r"}// List variables{"action":"stdin","id":"ipython-repl","data":"%whos\r"}// Edit code in external editor{"action":"stdin","id":"ipython-repl","data":"%edit myfunction\r"}
Object Introspection
// Get help{"action":"stdin","id":"ipython-repl","data":"str.split?\r"}// Detailed help{"action":"stdin","id":"ipython-repl","data":"str.split??\r"}// List methods{"action":"stdin","id":"ipython-repl","data":"dir(str)\r"}// Type inspection{"action":"stdin","id":"ipython-repl","data":"type(my_variable)\r"}
Shell Commands in IPython
// Run shell command{"action":"stdin","id":"ipython-repl","data":"!ls -la\r"}// Capture shell output{"action":"stdin","id":"ipython-repl","data":"files = !ls *.py\r"}// Use Python variables in shell{"action":"stdin","id":"ipython-repl","data":"!echo {my_var}\r"}
// Define async function{"action":"stdin","id":"node-repl","data":"async function fetchData() { return 'data' }\r"}// Call with await (Node 16+){"action":"stdin","id":"node-repl","data":"await fetchData()\r"}
Node REPL Commands
// Show help{"action":"stdin","id":"node-repl","data":".help\r"}// Load file{"action":"stdin","id":"node-repl","data":".load script.js\r"}// Save session to file{"action":"stdin","id":"node-repl","data":".save session.js\r"}// Exit REPL{"action":"stdin","id":"node-repl","data":".exit\r"}
// 1. Start IPython session{"action":"start","command":"ipython","name":"api-explore"}// 2. Import library{"action":"stdin","id":"api-explore","data":"import requests\r"}// 3. Inspect module{"action":"stdin","id":"api-explore","data":"dir(requests)\r"}// 4. Get help on specific function{"action":"stdin","id":"api-explore","data":"requests.get?\r"}// 5. Test API call{"action":"stdin","id":"api-explore","data":"response = requests.get('https://api.github.com')\r"}// 6. Inspect response{"action":"stdin","id":"api-explore","data":"response.json()\r"}// 7. Capture all output{"action":"stdout","id":"api-explore"}
// Start Python REPL for backend logic{"action":"start","command":"python3 -i","name":"backend-repl"}// Start Node REPL for frontend logic{"action":"start","command":"node","name":"frontend-repl"}// Test Python API{"action":"stdin","id":"backend-repl","data":"def process_data(data): return data.upper()\r"}// Test JavaScript frontend{"action":"stdin","id":"frontend-repl","data":"const formatData = (data) => data.toLowerCase()\r"}// List all active REPLs{"action":"list"}
Code Prototyping Workflow
// 1. Start REPL{"action":"start","command":"python3 -i","name":"prototype"}// 2. Test idea{"action":"stdin","id":"prototype","data":"def factorial(n): return 1 if n <= 1 else n * factorial(n-1)\r"}// 3. Test with examples{"action":"stdin","id":"prototype","data":"factorial(5)\r"}// 4. Check edge cases{"action":"stdin","id":"prototype","data":"factorial(0)\r"}{"action":"stdin","id":"prototype","data":"factorial(1)\r"}// 5. Refine implementation{"action":"stdin","id":"prototype","data":"def factorial_iterative(n):\r result = 1\r for i in range(2, n + 1):\r result *= i\r return result\r\r"}// 6. Compare performance{"action":"stdin","id":"prototype","data":"import time\r"}{"action":"stdin","id":"prototype","data":"start = time.time(); factorial(100); print(time.time() - start)\r"}// 7. Capture final output{"action":"stdout","id":"prototype"}
Interactive Documentation Generation
// 1. Start IPython{"action":"start","command":"ipython","name":"doc-gen"}// 2. Import module{"action":"stdin","id":"doc-gen","data":"import mymodule\r"}// 3. Get function signatures{"action":"stdin","id":"doc-gen","data":"import inspect\r"}{"action":"stdin","id":"doc-gen","data":"inspect.signature(mymodule.my_function)\r"}// 4. Get docstrings{"action":"stdin","id":"doc-gen","data":"mymodule.my_function.__doc__\r"}// 5. Test examples from docs{"action":"stdin","id":"doc-gen","data":"mymodule.my_function('test')\r"}// 6. Extract for documentation{"action":"stdout","id":"doc-gen"}
Session State Management
// Save current REPL state to file{"action":"stdin","id":"python-repl","data":"import dill\r"}{"action":"stdin","id":"python-repl","data":"dill.dump_session('session.pkl')\r"}// Later, restore state{"action":"stdin","id":"python-repl","data":"dill.load_session('session.pkl')\r"}
Best Practices
REPL Session Hygiene
Name sessions descriptively: Use name that reflects purpose (e.g., "api-test", "data-explore")
Clean up variables: Use del variable to free memory
Restart when needed: Stop and start fresh sessions to avoid state pollution
Use stream mode for long operations: Avoid blocking on compute-intensive tasks
Error Handling
// Catch and inspect errors{"action":"stdin","id":"python-repl","data":"try:\r risky_operation()\rexcept Exception as e:\r print(f'Error: {e}')\r import traceback\r traceback.print_exc()\r\r"}
Output Parsing
Use stdout action after commands that produce output
Parse REPL prompt patterns to extract results
Use stream with since_last: true for incremental output
Strip ANSI codes if needed for clean parsing
Managing Long-Running Operations
// Start long computation{"action":"stdin","id":"python-repl","data":"result = expensive_computation()\r"}// Check progress with stream mode{"action":"stream","id":"python-repl","since_last":true}// Don't block - continue other work// Check back later with stdout{"action":"stdout","id":"python-repl"}
Multi-Session Coordination
// List all active sessions{"action":"list"}// Stop specific session{"action":"stop","id":"python-repl"}// Stop all sessions (clean shutdown)// Iterate through list results and stop each
Common REPL Workflows
Quick Script Testing
Start REPL
Paste/type code snippets
Test with various inputs
Capture output
Refine code
Save final version to file
Library Evaluation
Start REPL
Import library
Explore API with dir() and help
Test key functions
Measure performance with %timeit
Document findings
Debugging Production Issues
Start REPL with production environment
Import relevant modules
Reproduce issue with test data
Inspect intermediate states
Test fixes
Verify solution
Interactive Configuration
Start REPL
Load configuration
Test different settings
Validate outcomes
Save working configuration
This skill provides comprehensive patterns for AI-driven REPL interaction using terminalcp's persistent session management.