OpenSpace working-directory-resolution

Resolve file access failures by changing to the correct working directory before command execution

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/working-directory-resolution" ~/.claude/skills/hkuds-openspace-working-directory-resolution && rm -rf "$T"
manifest: gdpval_bench/skills/working-directory-resolution/SKILL.md
source content

Working Directory Resolution Pattern

Many file operation failures occur because the tool's current working directory doesn't match where the target files are located. This skill provides a reliable pattern for resolving such issues.

Problem Symptoms

File operations fail with errors like:

  • "File not found" or "No such file or directory"
  • "Permission denied" (when path is actually relative)
  • Tools returning empty results for files that should exist

These failures often occur even when files are present in the workspace—the working directory context is simply wrong.

Solution

Always explicitly set the working directory before file operations by prepending

cd
to your shell commands.

Implementation Pattern

Basic Syntax

cd /path/to/target/directory && your-command-here

With
run_shell

run_shell(command="cd /workspace/project && cat config.json")

Multiple Operations in Same Directory

cd /workspace/project && ls -la && cat README.md && python script.py

Conditional Directory Change

cd /workspace/project 2>/dev/null && cat file.txt || echo "Directory not found"

When to Apply

Use this pattern when:

  • read_file
    fails to locate an existing file
  • execute_code_sandbox
    can't find referenced files
  • Shell commands report missing files that should exist
  • File paths work in some contexts but not others
  • You're unsure of the tool's current working directory

Best Practices

  1. Use absolute paths when possible

    cd /workspace/project/src && python main.py
    
  2. Combine related operations to avoid repeated

    cd
    calls

    cd /workspace/project && ./build.sh && ./test.sh
    
  3. Verify directory exists before operations

    [ -d /workspace/project ] && cd /workspace/project && ls
    
  4. For scripts, set working directory at the start

    #!/bin/bash
    cd "$(dirname "$0")" || exit 1
    # Rest of script runs from script's directory
    

Common Pitfalls

IssueWrong ApproachCorrect Approach
Relative paths
cat config.json
cd /workspace && cat config.json
Assumed cwd
python script.py
cd /workspace && python script.py
Multiple dirs
cd dir1; cd dir2; cmd
cd dir1/dir2 && cmd

Fallback Strategy

If

cd
also fails:

  1. Use
    pwd
    to check current directory
  2. Use
    find
    or
    ls -R
    to locate files
  3. Verify the path structure with
    ls -la /path/to/check
pwd && find /workspace -name "target_file.txt" 2>/dev/null

This pattern is especially valuable when tools like

execute_code_sandbox
or
read_file
fail but
run_shell
with explicit directory context succeeds.