Harvey Developer Guide

This guide is for developers who want to understand Harvey’s internals, contribute to the project, or extend its functionality.


πŸ—οΈ Architecture & Design

Core Architecture

Design Documents


πŸ› οΈ Development Setup

Prerequisites

Building Harvey

# Build all programs
make build

# Build a single program
go build -o bin/<name> cmd/<name>/*.go

# Generate version.go from codemeta.json
cmt codemeta.json version.go

# Build website (HTML from Markdown via pandoc)
make website

# Clean build artifacts
make clean

πŸ§ͺ Testing


πŸ“¦ Code Organization

Main Package (harvey/)

Command Entry Points (cmd/)

Built-in Tools (builtin_tools.go)


🎨 Conventions & Style

Documentation Conventions

All exported functions, structs/types, interfaces, and constants must be documented with a /** ... */ block comment including: - Description of what the symbol is or does - Parameters β€” name, type, and purpose for each - Return values β€” type and meaning - An embedded usage example

Code Conventions


πŸ“š Additional Resources

For Contributors