Skip to content

AICL-Lab/build-your-own-tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Build Your Own Tools

CI Docs License Rust Go

English | 简体中文

Rebuild real CLI tools in Rust and Go to learn file I/O, compression, TUI design, cross-platform behavior, and the trade-offs between two systems languages.

Live Site · Getting Started · Architecture · Rust vs Go Comparison

Included projects

Tool Languages What it teaches Status
dos2unix Rust streaming file I/O, buffer boundaries, newline handling Stable
gzip Rust + Go compression pipelines, CLI design, idiomatic error handling Stable
htop Rust + Go TUI architecture, process metrics, cross-platform system APIs Stable

Why this repo is useful

  • One idea, two implementations: compare Rust and Go on the same problem space.
  • Progressive complexity: start with a small streaming tool and end with a cross-platform terminal UI.
  • Spec-driven development: repository-wide changes are tracked with OpenSpec instead of ad hoc drift.
  • Practical engineering: shared build commands, CI, release automation, and a documentation site are part of the learning surface.

Quick start

git clone https://github.com/LessUp/build-your-own-tools.git
cd build-your-own-tools

make build-all
make test-all

# Example: convert CRLF input from stdin
printf 'hello\r\nworld\r\n' | ./target/release/dos2unix-rust

Development workflow

Repository-wide work follows OpenSpec:

openspec list
/opsx:propose "describe the change"
/opsx:apply
/opsx:archive

For implementation and review:

make lint-all
make test-all
npm run docs:check
npm run docs:build

See AGENTS.md, CLAUDE.md, and .github/copilot-instructions.md for the shared AI-assisted workflow rules used in this repository.

Documentation map

Document Purpose
Getting Started set up the toolchains and run the project
Architecture understand repo structure and system design
Comparison compare Rust and Go design choices
Project spec project-wide standards and workflow requirements
CHANGELOG.md project release history

License

Licensed under either of: