# CLAUDE.md for go-llm ## Build and Test Commands - Build project: `go build ./...` - Run all tests: `go test ./...` - Run specific test: `go test -v -run ./...` - Tidy dependencies: `go mod tidy` ## Code Style Guidelines - **Indentation**: Use standard Go tabs for indentation. - **Naming**: - Use `camelCase` for internal/private variables and functions. - Use `PascalCase` for exported types, functions, and struct fields. - Interface names should be concise (e.g., `LLM`, `ChatCompletion`). - **Error Handling**: - Always check and handle errors immediately. - Wrap errors with context using `fmt.Errorf("%w: ...", err)`. - Use the project's internal `Error` struct in `error.go` when differentiating between error types is needed. - **Project Structure**: - `llm.go`: Contains core interfaces (`LLM`, `ChatCompletion`) and shared types (`Message`, `Role`, `Image`). - Provider implementations are in `openai.go`, `anthropic.go`, and `google.go`. - Schema definitions for tool calling are in the `schema/` directory. - **Imports**: Organize imports into groups: standard library, then third-party libraries. - **Documentation**: Use standard Go doc comments for exported symbols. - **README.md**: The README.md file should always be kept up to date with any significant changes to the project.