en un clic
process-monitoring
// Patterns for managing and monitoring long-running processes (builds, tests, servers, etc.) via terminalcp
// Patterns for managing and monitoring long-running processes (builds, tests, servers, etc.) via terminalcp
Create YAML format work plans saved as .sisyphus/tasks/{name}.yaml with strict schema validation. Analyze user requirements, gather project context, and generate structured plans with verification specs. ALWAYS includes mandatory plan-reviewer verification. Use when users request YAML-based work planning or Sisyphus-compatible task breakdown.
GitHub Pull Request creation specialist. Analyzes user requirements to create PRs with structured titles and bodies matching the user's query language. Handles git change analysis, PR draft creation, user confirmation, and final PR creation via gh CLI.
Activate when user expresses intent to start Sisyphus work (e.g., "okay then work like that", "let's execute this", "start working on this"). Extract ai-todolist.md content from GitHub comments/files, create branch, commit, and trigger GitHub Actions workflow. If no ai-todolist format found, load plan-writer skill instead.
Patterns for controlling interactive debuggers (pdb, ipdb, gdb, lldb, node debug) via terminalcp
Patterns for controlling REPL sessions (Python, IPython, Node.js, Ruby, etc.) via terminalcp
Patterns for controlling TUI applications (vim, htop, tig, lazygit, etc.) via terminalcp
| name | process-monitoring |
| description | Patterns for managing and monitoring long-running processes (builds, tests, servers, etc.) via terminalcp |
This skill provides comprehensive patterns for managing long-running processes using terminalcp MCP. It enables AI agents to start, monitor, control, and analyze processes without blocking execution.
terminalcp enables:
The MCP server runs via npx @mariozechner/terminalcp@latest --mcp and maintains background processes independently.
{
"action": "start",
"command": "npm run dev",
"name": "dev-server"
}
Returns a session ID for future reference.
{
"action": "list"
}
Returns all active sessions with their names and IDs.
{
"action": "stop",
"id": "dev-server"
}
Terminates the process gracefully.
// Start build process
{
"action": "start",
"command": "npm run build",
"name": "build-process"
}
// Check build progress (non-blocking)
{
"action": "stream",
"id": "build-process",
"since_last": true
}
// Get full output when complete
{
"action": "stdout",
"id": "build-process"
}
// Start TypeScript compiler in watch mode
{
"action": "start",
"command": "tsc --watch",
"name": "tsc-watch"
}
// Periodically check for compilation errors
{
"action": "stream",
"id": "tsc-watch",
"since_last": true
}
// Parse output for error patterns:
// "error TS2345:", "Found N errors", etc.
// Start frontend build
{
"action": "start",
"command": "npm run build:frontend",
"name": "frontend-build"
}
// Start backend build
{
"action": "start",
"command": "npm run build:backend",
"name": "backend-build"
}
// Monitor both in parallel
{
"action": "stream",
"id": "frontend-build",
"since_last": true
}
{
"action": "stream",
"id": "backend-build",
"since_last": true
}
// List all builds
{
"action": "list"
}
// Start test runner
{
"action": "start",
"command": "pytest tests/ -v",
"name": "test-run"
}
// Stream test results as they complete
{
"action": "stream",
"id": "test-run",
"since_last": true
}
// Get final summary
{
"action": "stdout",
"id": "test-run"
}
// Start test watcher
{
"action": "start",
"command": "npm test -- --watch",
"name": "test-watch"
}
// Monitor for test failures
{
"action": "stream",
"id": "test-watch",
"since_last": true
}
// Parse output for:
// "FAIL", "PASS", test counts, coverage changes
// Run full CI pipeline locally
{
"action": "start",
"command": "make ci",
"name": "ci-pipeline"
}
// Check progress
{
"action": "stream",
"id": "ci-pipeline",
"since_last": true
}
// Parse for stage completions:
// "✓ Lint", "✓ Test", "✓ Build", "✗ Deploy"
// Start backend server
{
"action": "start",
"command": "uvicorn app:app --reload",
"name": "backend-server"
}
// Start frontend dev server
{
"action": "start",
"command": "npm run dev",
"name": "frontend-server"
}
// Start database
{
"action": "start",
"command": "docker-compose up postgres",
"name": "database"
}
// Check if server is ready
{
"action": "stream",
"id": "backend-server",
"since_last": true
}
// Parse for readiness indicators:
// "Application startup complete"
// "Uvicorn running on http://127.0.0.1:8000"
// "Listening on port 3000"
// Continuous log monitoring
{
"action": "stream",
"id": "backend-server",
"since_last": true
}
// Parse logs for:
// - Error patterns (500 errors, exceptions)
// - Request patterns (endpoints hit, response times)
// - Warning messages
// Stop existing server
{
"action": "stop",
"id": "backend-server"
}
// Start new instance
{
"action": "start",
"command": "uvicorn app:app --reload",
"name": "backend-server"
}
// Verify startup
{
"action": "stream",
"id": "backend-server",
"since_last": true
}
// Start docker-compose services
{
"action": "start",
"command": "docker-compose up",
"name": "docker-services"
}
// Monitor startup logs
{
"action": "stream",
"id": "docker-services",
"since_last": true
}
// Parse for:
// "Container started"
// "Listening on port..."
// Health check status
// Follow specific container logs
{
"action": "start",
"command": "docker logs -f mycontainer",
"name": "container-logs"
}
// Stream logs
{
"action": "stream",
"id": "container-logs",
"since_last": true
}
// Start image build
{
"action": "start",
"command": "docker build -t myimage:latest .",
"name": "docker-build"
}
// Monitor build progress
{
"action": "stream",
"id": "docker-build",
"since_last": true
}
// Parse for:
// "Step 1/10", "Successfully built", errors
// Start migration
{
"action": "start",
"command": "alembic upgrade head",
"name": "db-migration"
}
// Monitor progress
{
"action": "stream",
"id": "db-migration",
"since_last": true
}
// Check completion
{
"action": "stdout",
"id": "db-migration"
}
// Parse for:
// "Running upgrade", "OK", errors
// Start seed process
{
"action": "start",
"command": "python seed_database.py",
"name": "db-seed"
}
// Monitor with progress updates
{
"action": "stream",
"id": "db-seed",
"since_last": true
}
// Parse for:
// "Seeded X records", progress bars, completion
// 1. Run tests
{
"action": "start",
"command": "pytest",
"name": "deploy-test"
}
// 2. Wait for tests to complete
{
"action": "stream",
"id": "deploy-test",
"since_last": true
}
// Parse output, if tests pass:
// 3. Build application
{
"action": "start",
"command": "npm run build",
"name": "deploy-build"
}
// 4. Monitor build
{
"action": "stream",
"id": "deploy-build",
"since_last": true
}
// If build succeeds:
// 5. Deploy
{
"action": "start",
"command": "npm run deploy",
"name": "deploy-push"
}
// 6. Monitor deployment
{
"action": "stream",
"id": "deploy-push",
"since_last": true
}
// 7. Clean up sessions
{
"action": "stop",
"id": "deploy-test"
}
{
"action": "stop",
"id": "deploy-build"
}
{
"action": "stop",
"id": "deploy-push"
}
// Start all services
{
"action": "start",
"command": "docker-compose up",
"name": "services"
}
// Create monitoring loop
// Every 30 seconds:
{
"action": "stream",
"id": "services",
"since_last": true
}
// Parse for error patterns:
// - "error", "exception", "failed"
// - Service restart indicators
// - Connection errors
// - Memory/resource issues
// If errors detected, alert and capture full context:
{
"action": "stdout",
"id": "services"
}
// Start application
{
"action": "start",
"command": "node server.js",
"name": "app-server"
}
// Continuous monitoring with analysis
// Stream logs in chunks:
{
"action": "stream",
"id": "app-server",
"since_last": true
}
// Analyze each chunk:
// - Count error types
// - Track request patterns
// - Identify anomalies
// - Build metrics
// Aggregate findings over time
// Alert on threshold breaches
// Start unit tests
{
"action": "start",
"command": "pytest tests/unit -v",
"name": "unit-tests"
}
// Start integration tests
{
"action": "start",
"command": "pytest tests/integration -v",
"name": "integration-tests"
}
// Start e2e tests
{
"action": "start",
"command": "npm run test:e2e",
"name": "e2e-tests"
}
// Monitor all in parallel
{
"action": "stream",
"id": "unit-tests",
"since_last": true
}
{
"action": "stream",
"id": "integration-tests",
"since_last": true
}
{
"action": "stream",
"id": "e2e-tests",
"since_last": true
}
// Aggregate results when all complete
// 1. Start database
{
"action": "start",
"command": "docker-compose up postgres",
"name": "dev-db"
}
// 2. Wait for database readiness
{
"action": "stream",
"id": "dev-db",
"since_last": true
}
// Parse for: "database system is ready to accept connections"
// 3. Run migrations
{
"action": "start",
"command": "alembic upgrade head",
"name": "dev-migrations"
}
{
"action": "stdout",
"id": "dev-migrations"
}
// 4. Seed data
{
"action": "start",
"command": "python seed.py",
"name": "dev-seed"
}
// 5. Start backend
{
"action": "start",
"command": "uvicorn app:app --reload",
"name": "dev-backend"
}
// 6. Start frontend
{
"action": "start",
"command": "npm run dev",
"name": "dev-frontend"
}
// 7. Monitor all services
{
"action": "list"
}
// List all running processes
{
"action": "list"
}
// Stop frontend first (no dependencies)
{
"action": "stop",
"id": "dev-frontend"
}
// Stop backend
{
"action": "stop",
"id": "dev-backend"
}
// Stop database last
{
"action": "stop",
"id": "dev-db"
}
// Verify all stopped
{
"action": "list"
}
# Parse stream output for errors
error_patterns = [
r"error:",
r"ERROR",
r"Exception:",
r"Traceback",
r"failed",
r"\[ERROR\]",
r"FAIL:",
r"✗"
]
# Check each line from stream
for line in output.split('\n'):
for pattern in error_patterns:
if re.search(pattern, line, re.IGNORECASE):
# Found error, capture context
# Parse for progress indicators
progress_patterns = [
r"(\d+)%", # Percentage
r"(\d+)/(\d+)", # X of Y
r"Step (\d+) of (\d+)", # Build steps
r"✓", # Success marks
r"Running (\d+) tests?", # Test count
]
# Extract timing information
timing_patterns = [
r"Time: (\d+\.?\d*)s",
r"Elapsed: (\d+:\d+)",
r"Duration: (\d+)ms",
r"in (\d+\.?\d*)s",
]
# Detect when services are ready
readiness_patterns = [
r"Application startup complete",
r"Listening on .+:\d+",
r"Server running at",
r"Ready in (\d+)ms",
r"Uvicorn running on",
r"Started server on",
]
frontend-build, not build1test-integration, db-migration-prod// Always clean up completed processes
{
"action": "stop",
"id": "completed-process"
}
// Verify cleanup
{
"action": "list"
}
// Check if process started successfully
{
"action": "stream",
"id": "new-process",
"since_last": false
}
// Parse for startup errors:
// - "command not found"
// - "port already in use"
// - "permission denied"
// If errors detected, stop and report
{
"action": "stop",
"id": "new-process"
}
This skill provides comprehensive patterns for process management and monitoring using terminalcp's persistent session capabilities.