Skip to main content

timeout-prevention-operation-batching

Track execution time, identify operation batching opportunities, and prevent timeout violations. Use when approaching time limits or when performing many sequential operations to optimize execution and prevent 300-second timeout failures.

소스 정보

저장소
pmarashian/cursor-agent-skills
최근 소스 활동
2026년 2월 13일 19:51
감지된 SKILL.md 언어
영어
스타
2
포크
1

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
timeout-prevention-operation-batching
description
Track execution time, identify operation batching opportunities, and prevent timeout violations. Use when approaching time limits or when performing many sequential operations to optimize execution and prevent 300-second timeout failures.
# Timeout Prevention and Operation Batching ## Overview Strategies for tracking execution time, identifying batching opportunities, and preventing timeout violations. Helps agents optimize operation patterns to stay within 300-second iteration limits. **Problem**: Multiple tasks exceeded 300-second timeout limits due to excessive sequential operations (168+ shell commands in single iterations). **Solution**: Monitor elapsed time, batch independent operations, and prioritize critical work when approaching limits. **Impact**: Reduce timeout occurrences by 70-80%, improve task completion rates. ## Time Tracking ### Checkpoint Strategy **Monitor elapsed time at key checkpoints:** ```markdown ## Execution Checkpoints 1. **Start**: Record start time 2. **After Planning**: Check elapsed time after planning phase 3. **After Implementation**: Check elapsed time after code changes 4. **Before Testing**: Check elapsed time before browser/testing phase 5. **Soft Warning**: Alert at 200s (2/3 of 300s limit) ``` ### Time Monitoring Pattern ```typescript // Track time at checkpoints const startTime = Date.now(); // After planning phase const planningTime = Date.now() - startTime; if (planningTime > 60) { console.warn('Planning phase took longer than expected'); } // Before testing const elapsedTime = Date.now() - startTime; if (elapsedTime > 200) { // Soft timeout warning - prioritize critical operations console.warn('Approaching timeout limit - optimize remaining operations'); } ``` ### Soft Timeout Warnings **Alert agent when approaching 200s (2/3 of limit):** ```markdown ⚠️ **SOFT TIMEOUT WARNING** (200s / 300s limit) When approaching 200 seconds: - Prioritize critical operations - Batch non-critical operations - Skip optional verification steps - Report progress immediately - Consider deferring non-essential work ``` ## Operation Batching Patterns ### Pattern 1: Batch Independent File Reads **Read multiple files in parallel instead of sequentially:** ```typescript // ❌ INEFFICIENT: Sequential reads const file1 = read_file('src/scenes/GameScene.ts'); const file2 = read_file('src/scenes/MainMenu.ts'); const file3 = read_file('src/types/GameState.ts'); // ✅ EFFICIENT: Parallel reads (batched) const [file1, file2, file3] = await Promise.all([ read_file('src/scenes/GameScene.ts'), read_file('src/scenes/MainMenu.ts'), read_file('src/types/GameState.ts') ]); ``` ### Pattern 2: Group Related Grep Searches **Combine multiple grep operations:** ```typescript // ❌ INEFFICIENT: Multiple separate greps grep('GameState', 'src/**/*.ts'); grep('generateMaze', 'src/**/*.ts'); grep('TILE_SIZE', 'src/**/*.ts'); // ✅ EFFICIENT: Single semantic search or combined grep codebase_search('Where is GameState used and how is maze generation implemented?'); // OR use grep with multiple patterns if supported ``` ### Pattern 3: Consolidate Browser Commands **Batch browser eval commands into single blocks:** ```bash # ❌ INEFFICIENT: Multiple separate browser calls agent-browser eval "window.__TEST__.commands.gameState()" agent-browser eval "window.__TEST__.commands.setLevel(2)" agent-browser eval "window.__TEST__.commands.setScore(100)" # ✅ EFFICIENT: Single eval block agent-browser eval " const state = window.__TEST__.commands.gameState(); window.__TEST__.commands.setLevel(2); window.__TEST__.commands.setScore(100); return state; " ``` ### Pattern 4: Combine Viewport Tests **Test multiple viewports in single browser session:** ```bash # ❌ INEFFICIENT: Separate browser sessions per viewport agent-browser open "http://localhost:5173?scene=GameScene" agent-browser viewport 500 400 agent-browser snapshot agent-browser close agent-browser open "http://localhost:5173?scene=GameScene" agent-browser viewport 1024 768 agent-browser snapshot agent-browser close # ✅ EFFICIENT: Single session with multiple viewports agent-browser open "http://localhost:5173?scene=GameScene" agent-browser viewport 500 400 agent-browser snapshot agent-browser viewport 1024 768 agent-browser snapshot agent-browser viewport 1920 1080 agent-browser snapshot agent-browser close ``` ### Pattern 5: Test Matrix Strategy **Test minimum and maximum viewports first, intermediate only if needed:** ```typescript // ✅ EFFICIENT: Test critical sizes first const viewports = [ { width: 500, height: 400 }, // Minimum { width: 1920, height: 1080 }, // Maximum // Only test intermediate if issues found ]; // If issues found, then test intermediate sizes if (issuesFound) { viewports.push( { width: 1024, height: 768 }, { width: 1280, height: 720 } ); } ``` ## Priority Guidance ### Critical vs Non-Critical Operations **When approaching timeout, prioritize:** ```markdown ## Priority Levels ### Critical (Must Complete) - Core functionality implementation - TypeScript compilation checks - Critical bug fixes - Success criteria verification ### Important (Should Complete) - Browser testing for main scenarios - Documentation updates - Progress.txt updates ### Optional (Can Defer) - Additional viewport testing - Edge case testing - Code cleanup - Non-critical documentation ``` ### Timeout Scenario Strategy **When at 200s+ elapsed time:** ```markdown 1. **Skip optional operations**: Defer non-critical testing 2. **Batch aggressively**: Combine all remaining operations 3. **Prioritize verification**: Focus on success criteria 4. **Report progress**: Update progress.txt immediately 5. **Complete marker**: Output completion marker if criteria met ``` ## Checkpoint Strategy ### Progress Reports **Force progress reports every 60-90 seconds:** ```markdown ## Progress Checkpoint (60s elapsed) - [x] Planning phase complete - [x] File analysis complete - [ ] Implementation in progress - [ ] Testing pending ## Progress Checkpoint (120s elapsed) - [x] Planning phase complete - [x] File analysis complete - [x] Implementation complete - [ ] Testing in progress ## Progress Checkpoint (180s elapsed) - [x] Planning phase complete - [x] File analysis complete - [x] Implementation complete - [x] Testing complete - [ ] Final verification pending ``` ### Silent Hang Prevention **Report progress regularly to prevent silent hangs:** ```typescript // Report progress every 60-90 seconds const lastReport = Date.now(); const REPORT_INTERVAL = 60000; // 60 seconds function checkProgress() { const elapsed = Date.now() - lastReport; if (elapsed > REPORT_INTERVAL) { console.log(`Progress: ${currentPhase} - ${elapsedTime}s elapsed`); lastReport = Date.now(); } } ``` ## Best Practices 1. **Monitor time**: Track elapsed time at checkpoints 2. **Batch operations**: Group independent operations 3. **Prioritize critical**: Focus on essential work when time is limited 4. **Report progress**: Update every 60-90 seconds 5. **Soft warnings**: Alert at 200s to optimize remaining work 6. **Parallel reads**: Read multiple files simultaneously 7. **Consolidate commands**: Batch browser and shell commands 8. **Test matrices**: Test critical viewports first ## Common Pitfalls ### Pitfall 1: Sequential File Reads **Problem**: Reading files one at a time **Solution**: Batch independent file reads ```typescript // ❌ WRONG: Sequential read_file('file1.ts'); read_file('file2.ts'); read_file('file3.ts'); // ✅ CORRECT: Parallel Promise.all([ read_file('file1.ts'), read_file('file2.ts'), read_file('file3.ts') ]); ``` ### Pitfall 2: Multiple Browser Sessions **Problem**: Opening new browser session for each test **Solution**: Reuse single session for multiple tests ```bash # ❌ WRONG: Multiple sessions agent-browser open "http://localhost:5173" agent-browser snapshot agent-browser close agent-browser open "http://localhost:5173" agent-browser snapshot agent-browser close # ✅ CORRECT: Single session agent-browser open "http://localhost:5173" agent-browser snapshot agent-browser reload agent-browser snapshot agent-browser close ``` ### Pitfall 3: No Time Awareness **Problem**: Not monitoring elapsed time **Solution**: Track time at checkpoints ```typescript // ❌ WRONG: No time tracking // Perform operations without monitoring // ✅ CORRECT: Time tracking const startTime = Date.now(); // ... operations ... const elapsed = Date.now() - startTime; if (elapsed > 200000) { // Optimize remaining operations } ``` ## Integration with Other Skills - **`file-operation-optimization`**: Uses batching patterns for file operations - **`agent-browser`**: Applies batching to browser commands - **`refactoring-workflow-optimization`**: Uses time tracking during refactoring ## Related Skills - `file-operation-optimization` - File reading and caching strategies - `agent-browser` - Browser automation patterns - `refactoring-workflow-optimization` - Refactoring with time awareness ## Remember 1. **Track time**: Monitor elapsed time at checkpoints 2. **Batch operations**: Group independent operations 3. **Prioritize**: Focus on critical work when time is limited 4. **Report progress**: Update every 60-90 seconds 5. **Soft warnings**: Alert at 200s (2/3 of limit) 6. **Prevent timeouts**: Optimize patterns to stay within 300s limit
GitHub에서 보기