OpenSpace fallback-file-ops
Use run_shell as fallback when execute_code_sandbox or shell_agent fail on filesystem operations
install
source · Clone the upstream repo
git clone https://github.com/HKUDS/OpenSpace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HKUDS/OpenSpace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/gdpval_bench/skills/fallback-file-ops" ~/.claude/skills/hkuds-openspace-fallback-file-ops && rm -rf "$T"
manifest:
gdpval_bench/skills/fallback-file-ops/SKILL.mdsource content
Fallback File Operations
Purpose
When
execute_code_sandbox or shell_agent fail with 'unknown error' on filesystem operations, fall back to run_shell with explicit mkdir and file write commands. This hybrid approach is more reliable for creating complex project structures.
When to Apply
returns 'unknown error' on file/directory creationexecute_code_sandbox
fails to write files or create nested directoriesshell_agent- You need to create complex project structures with multiple levels
Procedure
Step 1: Detect Tool Failure
Monitor for these failure patterns:
- Error message contains "unknown error"
- File operations silently fail (file not created)
- Directory creation returns success but directory doesn't exist
Step 2: Switch to run_shell
When failures occur, immediately switch to
run_shell for filesystem operations:
# Create directory structure explicitly run_shell: mkdir -p /path/to/nested/directory # Write files using shell redirection or echo run_shell: echo "content" > /path/to/file.txt # Or use cat with heredoc for multi-line files run_shell: cat > /path/to/file.txt << 'EOF' line 1 line 2 EOF
Step 3: Verify Creation
After each operation, verify the file/directory was created:
run_shell: ls -la /path/to/created/item run_shell: test -f /path/to/file && echo "File exists" run_shell: test -d /path/to/dir && echo "Directory exists"
Step 4: Continue with Hybrid Approach
- Use
for all filesystem operations (mkdir, write, copy, move)run_shell - Continue using
orexecute_code_sandbox
for code execution, compilation, or other non-filesystem tasksshell_agent - Document which tool handles which operation for clarity
Example: Creating Project Structure
# Failed attempt with execute_code_sandbox execute_code_sandbox: create directory src/components # Fallback with run_shell run_shell: mkdir -p src/components run_shell: mkdir -p src/utils run_shell: mkdir -p tests/unit run_shell: echo "// Component file" > src/components/Button.tsx run_shell: echo "// Utility file" > src/utils/helpers.ts
Best Practices
- Be explicit: Always use full paths or confirm working directory
- Create parent directories: Use
for nested structuresmkdir -p - Verify before proceeding: Check files exist before dependent operations
- Log tool switches: Note when you fall back to run_shell for debugging
- Batch operations: Group related file operations in consecutive run_shell calls
Common Pitfalls
- Don't assume filesystem state after tool failure
- Don't mix tools for the same file operation (pick one and stick with it)
- Don't skip verification steps when using fallback