Byo Coding Agent banner
betta-tech betta-tech

Byo Coding Agent

Git community

Description

[![ci](https://github.com/betta-tech/byo-coding-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/betta-tech/byo-coding-agent/actions/workflows/ci.yml)

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

Build Your Own Coding Agent

[![ci](https://github.com/betta-tech/byo-coding-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/betta-tech/byo-coding-agent/actions/workflows/ci.yml)

📖 **Read the book online:** [byoharness.dev](https://byoharness.dev) · [byoharness.dev/es](https://byoharness.dev/es/)

🌐 **Languages:** **English** · [Español](README.es.md)

A hands-on introduction to **harness engineering** — the discipline of building the scaffolding around an LLM that turns it into a useful agent. You'll build a working AI coding agent in Go, then experiment with the parts that matter: providers, tools, compaction strategies, and permissions.

What is harness engineering?

The model is the engine. The harness is everything else: the loop that calls it, the tools it can use, how its conversation is shaped over time, what it's allowed to do, how the user talks to it.

Get the harness right and a mid-tier model feels great. Get it wrong and a frontier model feels broken. Most of the interesting decisions in tools like Claude Code, OpenCode, and Aider live in their harnesses, not their models.

Harness engineering happens at three layers — **building** the loop and abstractions, **extending** them with new tools or integrations, and **configuring** the behavior via files like `AGENTS.md` and `mcp.json`. Most practitioners spend the bulk of their time in the top layer; this book focuses on building because that's where the mental model is formed. Once you've built one harness, you read every config file with new eyes.

This project is a stripped-down, readable version of those tools, designed to be poked at.

What you'll build

A terminal-based coding agent (~600 lines of Go) that:

  • Talks to Claude (or any LLM you plug in)
  • Calls tools — bash, read_file, write_file — to act on your filesystem
  • Asks for approval before each tool call
  • Compacts long conversations using pluggable strategies
  • Supports slash commands (/help, /model, `/com