# Core Concepts

## Tools Reference

Stud provides a set of powerful tools for interacting with your codebase. Every tool execution is transparent and requires your approval.

## Read

Reads the contents of a file from your filesystem. Supports line offsets and limits for large files, and can read images, PDFs, and Jupyter notebooks.

**Example**

```
Read src/server/PlayerData.lua
```

```
1│ local PlayerData = {}

2│

3│ function PlayerData.init(player)

4│ local data = DataStore:GetAsync(player.UserId)

5│ ...
```

#### Parameters
- `file_path` — Absolute path to the file to read  
- `offset` — Line number to start reading from (optional)  
- `limit` — Number of lines to read (optional)

## Write

Writes content to a file, creating it if it doesn't exist or overwriting it if it does. Stud will always ask for your permission before writing.

**Example**

```
Write src/shared/Config.lua
```

```
+return{

+ MaxPlayers = 50,

+ Debug = false,

+}
```

## Edit

Performs targeted string replacements in files. More precise than Write — only changes what needs to change, leaving the rest of the file untouched.

**Example**

```
Edit src/server/PlayerData.lua
```

```
- MaxPlayers = 50,

+ MaxPlayers = 100,
```

## Glob

Fast file pattern matching. Find files by name, extension, or directory pattern. Returns matching paths sorted by modification time.

**Example**

```
Glob "**/*.lua" 23 files
```

```
src/server/init.lua

src/server/PlayerData.lua

src/client/PlayerGui.lua

src/shared/Config.lua

... 19 more
```

## Grep

Search file contents using regular expressions. Supports context lines, file type filtering, and multiple output modes. Built on ripgrep for speed.

**Example**

```
Grep "GetAsync" --type lua
```

```
3 matches

src/server/PlayerData.lua:4: local data = DataStore:GetAsync(key)

src/server/Leaderboard.lua:12: local scores = Store:GetAsync("top")
```

## Bash

Execute shell commands directly from Stud. Useful for running builds, tests, git operations, and other terminal tasks. Output is captured and parsed intelligently.

**Example**

```
_git status
```

```
On branch main

Changes not staged for commit:

modified: src/server/PlayerData.lua
```

## Subagents

Delegate tasks to background agents that work in parallel. Subagents have their own context and tools, making them ideal for researching code, running tests, or handling independent subtasks.

**Example**

```
Spawning subagent: "Review all server scripts for security issues"

Agent working in background...
```

### Next Steps

[Permissions → How Stud keeps you in control](/content/docs/permissions/index.html)  
[Roblox Integration → 27+ specialized Roblox tools](/content/docs/roblox/index.html)
