# Filesystem

> File system operations guidance - read, write, search, and manage files using Claude Code's built-in tools.

- Skill: `oimiragieo/filesystem` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add oimiragieo/filesystem`
- Raw SKILL.md: https://api.skillmd.com/api/skills/oimiragieo/filesystem/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: oimiragieo (https://skillmd.com/u/oimiragieo)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/oimiragieo/filesystem

---


# Filesystem Skill

<identity>
Filesystem Skill - Guidance for file system operations using Claude Code's built-in tools. Read, write, search, and manage files efficiently.
</identity>

<capabilities>
- Reading single or multiple files
- Creating or modifying files
- Searching for files by pattern
- Searching file contents
- Directory navigation
</capabilities>

<instructions>
<execution_process>

## Claude Code Built-in Tools

### Reading Files

**Read Tool**: Read file contents

```
Read file_path="/path/to/file.txt"
```

Options:

- `offset`: Start line (for large files)
- `limit`: Number of lines to read

### Finding Files

**Glob Tool**: Find files by pattern

```
Glob pattern="**/*.ts"
```

Common patterns:

- `**/*.ts` - All TypeScript files
- `src/**/*.tsx` - React components in src
- `**/test*.js` - Test files anywhere

### Searching Content

**Primary Search**: Use `pnpm search:code "query"` or `Skill({ skill: 'ripgrep' })` for content searching. The built-in Grep tool is fallback-only.

**Grep Tool**: Search file contents (fallback only — prefer `pnpm search:code` or ripgrep skill first)

```
Grep pattern="function myFunc" path="/src"
```

Options:

- `output_mode`: "content", "files_with_matches", or "count"
- `-A`, `-B`, `-C`: Context lines

### Writing Files

**Write Tool**: Create or overwrite files

```
Write file_path="/path/to/file.txt" content="..."
```

**Edit Tool**: Modify existing files

```
Edit file_path="/path/to/file.txt" old_string="..." new_string="..."
```

### Directory Operations

**Bash Tool**: For directory operations

```bash
# List directory
ls -la /path/to/dir

# Create directory
mkdir -p /path/to/new/dir

# Move/rename
mv /old/path /new/path
```

</execution_process>

<best_practices>

## Common Workflows

### Reading Multiple Files

```
# Read files in parallel (multiple Read calls in one message)
Read file_path="/src/app.ts"
Read file_path="/src/config.ts"
Read file_path="/src/utils.ts"
```

### Search and Read

```
# 1. Find files
Glob pattern="**/*.config.ts"

# 2. Read matching files
Read file_path="/path/from/glob/result"
```

### Find and Replace

```
# 1. Search for pattern
Grep pattern="oldFunction" path="/src"

# 2. Edit each file
Edit file_path="/src/file.ts" old_string="oldFunction" new_string="newFunction"
```

## Best Practices

1. **Read Before Edit**: Always read a file before editing it
2. **Use Glob Over Bash**: Prefer Glob to `find` for file discovery
3. **Search Tool Hierarchy**: Use `pnpm search:code` or `Skill({ skill: 'ripgrep' })` first; use the Grep tool as fallback over raw bash grep only
4. **Parallel Reads**: Read multiple files in one message for speed
5. **Verify Changes**: Read file after editing to verify

</best_practices>
</instructions>

<examples>
<usage_example>
**Find and read all TypeScript files**:

```
Glob pattern="src/**/*.ts"
# Then read the results
Read file_path="/src/app.ts"
```

</usage_example>

<usage_example>
**Search for a function and edit it**:

```
Grep pattern="export function oldName" path="/src"
# Found in /src/utils.ts:23

Edit file_path="/src/utils.ts" old_string="export function oldName" new_string="export function newName"
```

</usage_example>
</examples>

## Rules

- Always read files before editing
- Use built-in tools (Read, Glob, Grep) instead of bash equivalents
- Verify changes after editing

## Memory Protocol (MANDATORY)

**Before starting:**

```bash
cat .claude/context/memory/learnings.md
```

**After completing:**

- New pattern -> `.claude/context/memory/learnings.md`
- Issue found -> `.claude/context/memory/issues.md`
- Decision made -> `.claude/context/memory/decisions.md`

> ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.

