CtrlK
BlogDocsLog inGet started
Tessl Logo

sandbox-failure-recovery

Recover from execute_code_sandbox failures by writing code to file and executing via run_shell

59

Quality

67%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./benchmarks/gdpval/skills/sandbox-failure-recovery/SKILL.md
SKILL.md
Quality
Evals
Security

Sandbox Failure Recovery Workflow

When execute_code_sandbox fails (often due to infrastructure issues, timeouts, or complex dependencies), use this recovery pattern to achieve identical results by writing the code to a file and executing it directly.

When to Use This Skill

  • execute_code_sandbox returns an error or times out
  • The task involves spreadsheet generation (Excel, CSV) or file output
  • You have working Python code that needs to be executed
  • The sandbox environment appears unstable

Step-by-Step Instructions

Step 1: Preserve the Failed Code

When execute_code_sandbox fails, capture the Python code that was attempted. If the code was generated but not saved, reconstruct it from the execution attempt.

Step 2: Write Code to File

Use write_file to save the Python script to a .py file:

write_file with:
- path: "script_name.py" (e.g., "generate_report.py", "process_data.py")
- content: <the full Python code>

Example:

# Content for write_file
import pandas as pd
from openpyxl import Workbook

# Your spreadsheet generation logic here
df = pd.DataFrame({'Revenue': [100, 200, 300]})
df.to_excel('output.xlsx', index=False)

Step 3: Execute via run_shell

Run the saved script using run_shell with Python 3:

run_shell with:
- command: "python3 script_name.py"
- timeout: 60 (or higher for complex operations)

Step 4: Verify Output

Check that the expected output files were created:

list_dir with:
- path: "."

Or read the generated file to confirm correctness:

read_file with:
- file_path: "output.xlsx"
- filetype: "xlsx"

Complete Example

Scenario: Generate an Excel P&L report after sandbox failure.

# Step 1: Write the Python script
write_file:
  path: "generate_pnl_report.py"
  content: |
    import pandas as pd
    from openpyxl import Workbook
    
    # Create revenue data
    data = {
        'Tour Stop': ['London', 'Paris', 'Berlin'],
        'Revenue': [50000, 45000, 38000],
        'Withholding Tax': [5000, 4500, 3800],
        'Expenses': [12000, 11000, 9500]
    }
    df = pd.DataFrame(data)
    df['Net Income'] = df['Revenue'] - df['Withholding Tax'] - df['Expenses']
    
    # Export to Excel
    df.to_excel('pnl_report.xlsx', index=False)
    print("Report generated successfully")

# Step 2: Execute the script
run_shell:
  command: "python3 generate_pnl_report.py"
  timeout: 60

# Step 3: Verify
list_dir:
  path: "."

Best Practices

  1. Use descriptive filenames - Name files after their purpose (e.g., generate_report.py, process_spreadsheet.py)

  2. Set appropriate timeouts - Complex operations may need 60+ seconds

  3. Include error handling in your Python code - Add try/except blocks to capture and report issues:

    try:
        # Your code here
    except Exception as e:
        print(f"Error: {e}")
        raise
  4. Clean up temporary files - After successful execution, you may remove the .py file if not needed

  5. Check dependencies - Ensure required packages (pandas, openpyxl, etc.) are available in the shell environment

Why This Works

  • run_shell executes in a more stable environment than the sandbox
  • File-based execution avoids sandbox memory/resource constraints
  • The Python interpreter in the shell has full access to installed packages
  • Output files are written directly to the workspace

<THIS_SKILL_EVOLVED>

Repository
HKUDS/OpenSpace
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.