···11+# CLAUDE.md
22+33+## Project Overview
44+55+This is `rust-version-updater`, a CLI tool that recursively updates `rust-version` fields in Cargo.toml files to match the currently installed Rust version.
66+77+## Build Requirements
88+99+This project targets **Zig master** (tip of tree). It uses unstable standard library APIs that are not available in stable releases.
1010+1111+Current development version: `0.16.0-dev.2368+380ea6fb5`
1212+1313+## Commands
1414+1515+```sh
1616+# Build
1717+zig build
1818+1919+# Build release
2020+zig build -Doptimize=ReleaseFast
2121+2222+# Run
2323+zig build run
2424+2525+# Run with arguments
2626+zig build run -- --dry-run
2727+2828+# Test
2929+zig build test
3030+```
3131+3232+## Project Structure
3333+3434+```
3535+.
3636+├── build.zig # Build configuration
3737+├── build.zig.zon # Package manifest
3838+└── src/
3939+ └── main.zig # All application code and tests
4040+```
4141+4242+## Code Patterns
4343+4444+- Uses the new `std.Io` and `std.process` APIs from Zig master
4545+- Entry point is `pub fn main(init: process.Init)` (not the traditional `pub fn main() void`)
4646+- Buffered I/O with explicit flush calls
4747+- Tests are inline at the bottom of main.zig using `test` blocks
4848+- Memory allocation uses the provided `init.gpa` allocator
4949+- All allocations are paired with corresponding `defer` frees
5050+5151+## Key Types
5252+5353+- `Version` - Semver parsing and comparison
5454+- `ProcessResult` / `ProcessStatus` - Result of processing a Cargo.toml file
5555+- `Stats` - Tracks scanned/updated/skipped/error counts
5656+5757+## Testing
5858+5959+Tests cover the pure functions (`Version.parse`, `Version.isOlderThan`, `processContent`). The I/O-dependent functions are not unit tested.
6060+6161+Run tests with: `zig build test`