Skills DirectorySearch all skills ↗

AI agent skill · by @NeverSight

Build Your Own X

Master programming by recreating your favorite technologies from scratch. Based on the 529K+ star GitHub repo codecrafters-io/build-your-own-x, this skill indexes 200+ step-by-step tutorials across 30+ tech domains — 3D renderer, AI model, blockchain, database, Docker, emulator, game engine, Git, OS, programming language, neural network, Shell, web server, and more. Triggers on: build your own, from scratch, byox, learn by building, recreate, 从零实现, 手写, 造轮子.

Archived 2026-10-23 · Source updated 2026-09-18. Check the original repository for the latest version.

SKILL.md instructions

# Build Your Own X — 从零构建一切

> "What I cannot create, I do not understand." — Richard Feynman

基于 [codecrafters-io/build-your-own-x](https://github.com/codecrafters-io/build-your-own-x)(529K+ ⭐),精心整理的 200+ 篇「从零重建技术」教程合集。

## Use this guide when someone asks

- "我想从零实现一个 XXX" / "I want to build a XXX from scratch"
- "怎么手写/手搓一个 XXX" / "How to recreate XXX"
- "想理解 XXX 底层原理" / "How does XXX work under the hood?"
- "build your own XXX" / "from scratch" / "byox"
- "不用框架/库,纯手写 XXX" / "No frameworks, just raw code"

## When NOT to use

- Simple how-to-use guides for existing frameworks/libraries
- Pure theory discussions without coding
- Already-known standalone tutorials (this is an index, not a replacement)

---

## How to Use

### Step 1: Clarify what to build

Ask:
- What technology? (database, game, OS, language…)
- What language? (Python, Go, Rust, C, JS…)
- Time budget? (one afternoon vs. multi-week deep dive)
- Minimal (< 500 lines) or full-featured?

### Step 2: Match a tutorial

Find the best match from the index below. Prioritize **language + difficulty + domain**.

### Step 3: Guide through the tutorial

- Open the tutorial link, extract key steps and code snippets
- Plan the coding flow, guide the user step by step
- If there's a companion code repo, point them to clone it
- Verify compilation/execution at each step

---

## 教程索引 / Tutorial Index

### 🎮 3D 渲染器 (3D Renderer)

| 语言 | 教程 | 特点 |
|------|------|------|
| C++ | [Ray Tracing in One Weekend](https://raytracing.github.io/books/RayTracingInOneWeekend.html) | 经典入门,周末搞定 |
| C++ | [TinyRenderer](https://github.com/ssloy/tinyrenderer/wiki) | 500 行 OpenGL |
| C++ | [Physically Based Rendering](http://www.pbr-book.org/) | 教科书级 |
| C# / JS | [3D soft engine from scratch](https://www.davrous.com/2013/06/13/tutorial-series-learning-how-to-write-a-3d-soft-engine-from-scratch-in-c-typescript-or-javascript/) | 从 C# 到 JS 多语言 |
| Java / JS | [Build your own 3D renderer](https://avik-das.github.io/build-your-own-raytracer/) | 从零光线追踪 |
| Python | [A 3D Modeller](http://aosabook.org/en/500L/a-3d-modeller.html) | 500 Lines or Less |
| C++ | [Rasterization: Practical Implementation](https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/overview-rasterization-algorithm) | 光栅化实战 |

### 🤖 AI 模型 (AI Model)

| 语言 | 教程 | 特点 |
|------|------|------|
| Python | [LLMs from scratch](https://github.com/rasbt/LLMs-from-scratch) | 从零实现大语言模型 |
| Python | [Diffusion Models for Image Generation](https://huggingface.co/learn/diffusion-course/en/unit1/3) | HuggingFace 官方 |
| Python | [RAG from Scratch](https://github.com/langchain-ai/rag-from-scratch) | LangChain 出品 |

### ⛓️ 区块链 / 加密货币 (Blockchain)

| 语言 | 教程 | 特点 |
|------|------|------|
| Go | [Building Blockchain in Go](https://jeiwan.net/posts/building-blockchain-in-go-part-1/) | 系列教程 |
| Python | [Learn Blockchains by Building One](https://hackernoon.com/learn-blockchains-by-building-one-117428612f46) | 经典入门 |
| JavaScript | [Naivecoin](https://github.com/conradoqg/naivecoin) | <1500 行 |
| TypeScript | [NaivecoinStake](https://naivecoinstake.learn.uno/) | PoS 版本 |
| JavaScript | [Build your own Blockchain in JS](https://github.com/nambrot/blockchain-in-js) | 纯 JS |

### 🗄️ 数据库 (Database)

| 语言 | 教程 | 特点 |
|------|------|------|
| Go | [Build Your Own Database from Scratch](https://build-your-own.org/database/) | B+Tree → SQL,3000 行 |
| Go | [Build Your Own Redis from Scratch](https://www.build-redis-from-scratch.dev/) | Redis 协议 |
| C | [Let's Build a Simple Database](https://cstack.github.io/db_tutorial/) | C 语言经典 |
| C++ | [Build Your Own Redis from Scratch](https://build-your-own.org/redis/) | Redis 实现 |
| JavaScript | [Dagoba: in-memory graph database](http://aosabook.org/en/500L/dagoba-an-in-memory-graph-database.html) | 500L 系列 |
| Python | [DBDB: Dog Bed Database](http://aosabook.org/en/500L/dbdb-dog-bed-database.html) | 500L 系列 |
| Python | [Miniature Redis with Python](http://charlesleifer.com/blog/building-a-simple-redis-server-with-python/) | 迷你 Redis |
| Rust | [Build your own Redis client and server](https://tokio.rs/tokio/tutorial/setup) | Tokio 官方 |

### 🐳 Docker

| 语言 | 教程 | 特点 |
|------|------|------|
| C | [Linux containers in 500 lines](https://blog.lizzie.io/linux-containers-in-500-loc.html) | 纯 C |
| Go | [Build Your Own Container Using <100 Lines of Go](https://www.infoq.com/articles/build-a-container-golang) | 100 行 Go |
| Python | [A workshop on Linux containers](https://github.com/Fewbytes/rubber-docker) | 重写 Docker |
| Shell | [Docker in ~100 lines of bash](https://github.com/p8952/bocker) | 最简容器 |

### 🕹️ 模拟器 / 虚拟机 (Emulator / VM)

| 语言 | 教程 | 特点 |
|------|------|------|
| C | [Write your Own Virtual Machine](https://justinmeiners.github.io/lc3-vm/) | LC-3 VM |
| C | [Writing a Game Boy emulator, Cinoop](https://cturt.github.io/cinoop.html) | GameBoy |
| JavaScript | [GameBoy Emulation in JavaScript](http://imrannazar.com/GameBoy-Emulation-in-JavaScript) | GameBoy in JS |
| Python | [Chip 8 Emulator/Interpreter](http://omokute.blogspot.com.br/2012/06/emulation-basics-write-your-own-chip-8.html) | Chip-8 |
| Rust | [0dmg: Learning Rust by building a Game Boy emulator](https://jeremybanks.github.io/0dmg/) | GameBoy in Rust |
| C++ | [NES Emulator From Scratch](https://www.youtube.com/playlist?list=PLrOv9FMX8xJHqMvSGB_9G9nZZ_4IgteYf) | NES 视频系列 |

### 🎮 游戏 (Game)

| 语言 | 教程 | 特点 |
|------|------|------|
| C | [Handmade Hero](https://handmadehero.org/) | 传奇级,从零写游戏 |
| C | [How to Program an NES game in C](https://nesdoug.com/) | NES 游戏 |
| C | [On Tetris and Reimplementation](https://brennan.io/2015/06/12/tetris-reimplementation/) | 俄罗斯方块 |
| JavaScript | [2D breakout game using Phaser](https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser) | MDN 官方 |
| JavaScript | [How to Make Your First Roguelike](https://gamedevelopment.tutsplus.com/tutorials/how-to-make-your-first-roguelike--gamedev-13677) | Roguelike |
| Python | [Pygame Tutorial](https://pythonprogramming.net/pygame-python-3-part-1-intro/) | Pygame 入门 |
| Python | [Roguelike Tutorial Revised](http://rogueliketutorials.com/) | Roguelike 经典 |
| Rust | [Roguelike Tutorial in Rust + tcod](https://tomassedovic.github.io/roguelike-tutorial/) | Rust + tcod |

### 🔧 Git

| 语言 | 教程 | 特点 |
|------|------|------|
| JavaScript | [Gitlet](http://gitlet.maryrosecook.com/docs/gitlet.html) | Git in JS |
| JavaScript | [Build GIT - Learn GIT](https://kushagra.dev/blog/build-git-learn-git/) | 学习 Git 内部 |
| Python | [Write yourself a Git!](https://wyag.thb.lt/) | 最完整 |
| Python | [ugit: Learn Git Internals by Building Git Yourself](https://www.leshenko.net/p/ugit/) | 精简易懂 |
| Python | [Just enough of a Git client](https://benhoyt.com/writings/pygit/) | 最小 Git |

### 🧠 神经网络 (Neural Network)

| 语言 | 教程 | 特点 |
|------|------|------|
| Python | [A Neural Network in 11 lines of Python](https://iamtrask.github.io/2015/07/12/basic-python-network/) | 11 行入门 |
| Python | [Build Deep Learning From Scratch](https://github.com/roiaimiel1/Build-Deep-Learning-From-Scratch) | 34 阶段重写 PyTorch |
| Python | [Neural Networks: Zero to Hero](https://www.youtube.com/playlist?list=PLAqhIrjkxbWUI23v9cTHsA9GvCAUhRvKZ) | Karpathy 视频 |
| Python | [SlowTorch](https://github.com/xames3/slowtorch) | 纯 Python 实现 PyTorch |
| Go | [Build a multilayer perceptron with Golang](https://made2591.github.io/posts/neuralnetwork) | Go 写 MLP |
| JavaScript | [Neural networks from scratch for JS linguists](https://hackernoon.com/neural-networks-from-scratch-for-javascript-linguists-part1-the-perceptron-632a4d1fbad2) | JS 党入门 |

### 💻 操作系统 (Operating System)

| 语言 | 教程 | 特点 |
|------|------|------|
| C | [OS: From 0 to 1](https://tuhdo.github.io/os01/) | 电子书 |
| C | [The little book about OS development](https://littleosbook.github.io/) | 经典小书 |
| C | [Roll your own toy UNIX-clone OS](http://jamesmolloy.co.uk/tutorial_html/) | 类 UNIX |
| C | [Kernel 101 – Let's write a Kernel](https://arjunsreedharan.org/post/82710718100/kernel-101-lets-write-a-kernel) | 入门内核 |
| C | [Kernel 201 – Keyboard and screen support](https://arjunsreedharan.org/post/99370248137/kernel-201-lets-write-a-kernel-with-keyboard) | 进阶内核 |
| Rust | [Writing an OS in Rust](https://os.phil-opp.com/) | Rust OS 圣经 |
| Rust | [Add RISC-V Rust Operating System Tutorial](https://osblog.stephenmarz.com/) | RISC-V |
| Assembly | [Writing a Tiny x86 Bootloader](http://joebergeron.io/posts/post_two.html) | Bootloader |
| C++ | [Write your own Operating System](https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M) | 视频系列 |
| (any) | [Linux from Scratch](https://linuxfromscratch.org/lfs) | 终极挑战 |

### 📝 编程语言 (Programming Language)

| 语言 | 教程 | 特点 |
|------|------|------|
| (any) | [mal - Make a Lisp](https://github.com/kanaka/mal#mal---make-a-lisp) | 68 种语言实现 Lisp |
| C | [Build Your Own Lisp](http://www.buildyourownlisp.com/) | 1000 行 C |
| Go | [The Super Tiny Compiler](https://github.com/hazbo/the-super-tiny-compiler) | 最小编译器 |
| JavaScript | [The Super Tiny Compiler](https://github.com/jamiebuilds/the-super-tiny-compiler) | JS 版 |
| JavaScript | [How to implement a programming language in JS](http://lisperator.net/pltut/) | PL 入门 |
| Python | [Let's Build A Simple Interpreter](https://ruslanspivak.com/lsbasi-part1/) | 解释器系列 |
| Python | [From Source Code To Machine Code](https://build-your-own.org/compiler/) | 编译器 |
| Python | [A Python Interpreter Written in Python](http://aosabook.org/en/500L/a-python-interpreter-written-in-python.html) | PyPy 式 |
| Haskell | [Write Yourself a Scheme in 48 Hours](https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours) | Scheme 48h |
| Java | [Crafting Interpreters](http://www.craftinginterpreters.com/) | 神书 |
| Rust | [Learning Parser Combinators With Rust](https://bodil.lol/parser-combinators/) | Parser Combinators |
| TypeScript | [Build your own WebAssembly Compiler](https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html) | WASM |

### 🔍 正则表达式引擎 (Regex Engine)

| 语言 | 教程 | 特点 |
|------|------|------|
| C | [A Regular Expression Matcher](https://www.cs.princeton.edu/courses/archive/spr09/cos333/beautiful.html) | Rob Pike 经典 |
| JavaScript | [Build a Regex Engine in <40 Lines of Code](https://nickdrane.com/build-your-own-regex/) | <40 行 |
| Python | [Build Your Own Regex Engines](https://build-your-own.org/b2a/r0_intro) | NFA/DFA/回溯 |

### 🔎 搜索引擎 (Search Engine)

| 语言 | 教程 | 特点 |
|------|------|------|
| Python | [Building a search engine using Redis](http://www.dr-josiah.com/2010/07/building-search-engine-using-redis-and.html) | Redis 搜索 |
| Python | [Building A Python-Based Search Engine](https://www.youtube.com/watch?v=cY7pE7vX6MU) | 视频 |

### 🐚 Shell

| 语言 | 教程 | 特点 |
|------|------|------|
| C | [Tutorial - Write a Shell in C](https://brennan.io/2015/01/16/write-a-shell-in-c/) | C Shell 经典 |
| C | [Writing a UNIX Shell](https://indradhanush.github.io/blog/writing-a-unix-shell-part-1/) | UNIX Shell |
| Go | [Writing a simple shell in Go](https://sj14.gitlab.io/post/2018-07-01-go-unix-shell/) | Go Shell |
| Rust | [Build Your Own Shell using Rust](https://www.joshmcguigan.com/blog/build-your-own-shell-rust/) | Rust Shell |

### 🌐 Web 服务器 (Web Server)

| 语言 | 教程 | 特点 |
|------|------|------|
| Node.js | [Build Your Own Web Server From Scratch In JavaScript](https://build-your-own.org/webserver/) | 分步指南 |
| Node.js | [lets-build-express](https://github.com/antoaravinth/lets-build-express) | 从零写 Express |
| Python | [Let's Build A Web Server.](https://ruslanspivak.com/lsbaws-part1/) | 经典系列 |
| Python | [Web application from scratch](https://defn.io/2018/02/25/web-app-from-scratch-01/) | 从头开始 |
| Ruby | [Building a simple websockets server from scratch in Ruby](http://blog.honeybadger.io/building-a-simple-websockets-server-from-scratch-in-ruby/) | WebSocket |

### 🖥️ 前端框架 / 库 (Front-end Framework)

| 语言 | 教程 | 特点 |
|------|------|------|
| JavaScript | [WTF is JSX (Let's Build a JSX Renderer)](https://jasonformat.com/wtf-is-jsx/) | 理解 JSX |
| JavaScript | [Build your own React](https://pomb.us/build-your-own-react/) | 手写 React |
| JavaScript | [Gooact: React in 160 lines of JavaScript](https://medium.com/@sweetpalma/gooact-react-in-160-lines-of-javascript-44e0742ad60f) | 160 行 React |
| JavaScript | [Build Yourself a Redux](https://zapier.com/engineering/how-to-build-redux/) | 手写 Redux |
| JavaScript | [Building a frontend framework](https://mfrachet.github.io/create-frontend-framework/) | 完整框架 |
| JavaScript | [How to write your own Virtual DOM](https://medium.com/@deathmood/how-to-write-your-own-virtual-dom-ee74acc13060) | 虚拟 DOM |

### 📡 网络栈 (Network Stack)

| 语言 | 教程 | 特点 |
|------|------|------|
| C | [Beej's Guide to Network Programming](http://beej.us/guide/bgnet/) | 网络编程圣经 |
| C | [Let's code a TCP/IP stack](http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/) | TCP/IP |
| Ruby | [How to build a network stack in Ruby](https://medium.com/geckoboard-under-the-hood/how-to-build-a-network-stack-in-ruby-f73aeb1b661b) | Ruby 网络 |

### 🖊️ 文本编辑器 (Text Editor)

| 语言 | 教程 | 特点 |
|------|------|------|
| C | [Build Your Own Text Editor (Kilo)](https://viewsourcecode.org/snaptoken/kilo/) | 经典 kilo |
| Rust | [Hecto: Build your own text editor in Rust](https://www.flenker.blog/hecto/) | Rust 编辑器 |

### 🧩 模板引擎 (Template Engine)

| 语言 | 教程 | 特点 |
|------|------|------|
| JavaScript | [JS template engine in just 20 lines](http://krasimirtsonev.com/blog/article/Javascript-template-engine-in-just-20-line) | 20 行 |
| Python | [A Template Engine](http://aosabook.org/en/500L/a-template-engine.html) | 500L 系列 |

### 🧰 命令行工具 (Command-Line Tool)

| 语言 | 教程 | 特点 |
|------|------|------|
| Go | [Build a CLI app with Go: lolcat](https://flaviocopes.com/go-tutorial-lolcat/) | Go CLI |
| Rust | [Command line apps in Rust](https://rust-cli.github.io/book/index.html) | Rust CLI 书 |
| Node.js | [Create a CLI tool in JavaScript](https://citw.dev/tutorial/create-your-own-cli-tool) | JS CLI |

### 🔩 其他 (Uncategorized)

| 主题 | 语言 | 教程 |
|------|------|------|
| BitTorrent Client | C# | [Building a BitTorrent client from scratch in C#](https://www.seanjoflynn.com/research/bittorrent.html) |
| BitTorrent Client | Go | [Building a BitTorrent client in Go](https://blog.jse.li/posts/torrent/) |
| BitTorrent Client | Python | [A BitTorrent client in Python 3.5](http://markuseliasson.se/article/bittorrent-in-python/) |
| Augmented Reality | C# | [How To Unity ARCore](https://www.youtube.com/playlist?list=PLKIKuXdn4ZMjuUAtdQfK1vwTZPQn_rgSv) |
| Bot (各种) | Python | [Build a Reddit Bot](https://pythonforengineers.com/blog/build-a-reddit-bot-part-1/) |
| Bot | Node.js | [Create a Discord bot](https://discordjs.guide/) |
| Physics Engine | JavaScript | [How Physics Engines Work](http://buildnewgames.com/gamephysics/) |
| Physics Engine | C++ | [Game physics series by Allen Chou](http://allenchou.net/game-physics-series/) |
| Visual Recognition | Python | [Facial Recognition Pipeline with Deep Learning](https://hackernoon.com/building-a-facial-recognition-pipeline-with-deep-learning-in-tensorflow-66e7645015b8) |
| Voxel Engine | C++ | [Let's Make a Voxel Engine](https://sites.google.com/site/letsmakeavoxelengine/home) |
| Web Browser | Rust | [Let's build a browser engine](https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html) |
| Memory Allocator | C | [Malloc is not magic - Implementing your own](https://medium.com/p/e0354e914402) |
| Hash Table | C | [Learn how to write a hash table in C](https://github.com/jamesroutley/write-a-hash-table) |
| Video Player | C | [How to Write a Video Player in <1000 Lines](http://dranger.com/ffmpeg/ffmpeg.html) |
| DNS Server | Node.js | [Build a DNS Server in Node.js](https://engineerhead.github.io/dns-server/) |
| Load Balancer | Go | [Let's Create a Simple Load Balancer](https://kasvith.me/posts/lets-create-a-simple-lb-go/) |
| CDN | Lua | [Building a CDN from Scratch to Learn about CDN](https://github.com/leandromoreira/cdn-up-and-running) |
| From NAND to Tetris | (any) | [NAND to Tetris](http://nand2tetris.org/) |
| Build System | Nim | [Writing a Build system](https://xmonader.github.io/nimdays/day11_buildsystem.html) |
| JSON Decoding | Python | [JSON Decoding Algorithm](https://github.com/cheery/json-algorithm) |
| Promise | JavaScript | [Implementing promises from scratch (TDD)](https://www.mauriciopoppe.com/notes/computer-science/computation/promises/) |
| Module Bundler | JavaScript | [Minipack - Build Your Own Module Bundler](https://github.com/ronami/minipack) |
| Static Site Generator | Node.js | [Build a static site generator in 40 lines](https://www.webdevdrops.com/en/build-static-site-generator-nodejs-8969ebe34b22/) |
| Continuous Integration | Python | [A Continuous Integration System](http://aosabook.org/en/500L/a-continuous-integration-system.html) |

---

## 学习路线 / Learning Pathways

### 🟢 入门 (Beginner) — 周末速成 (Weekend projects)

适合刚入门、想快速有成就感 / Quick wins:


1. **Shell** (C) — 一个下午
2. **Regex Engine** (JS, <40 行) — 一小时
3. **Neural Network** (Python, 11 行) — 一小时
4. **Blockchain** (Python) — 一个下午
5. **Web Server** (Python/Node.js) — 一个下午

### 🟡 进阶 (Intermediate) — 深入理解 (Deep understanding)

有基础、想深入系统 / Solid foundations, deeper systems:

1. **Git** (Python) — 1 天
2. **Database** (Go/C) — 2-3 天
3. **Container/Docker** (Go) — 1 天
4. **3D Renderer** (C++, Ray Tracing) — 周末
5. **Emulator** (C, Chip-8) — 周末
6. **Programming Language** (mal Lisp) — 3-5 天

### 🔴 专家 (Expert) — 终极挑战 (The deep end)

推自己到极限 / Push your limits:

1. **Operating System** (C/Rust) — 数周到数月
2. **Compiler** (Crafting Interpreters) — 2-4 周
3. **Game Engine** (C, Handmade Hero) — 数月
4. **Browser Engine** (Rust) — 数周
5. **Linux from Scratch** — 数天到数周

---

## 小贴士 / Tips

- 从入门路线开始建立信心,再迈入进阶领域
- 每个项目建一个 Git 仓库记录进展
- 卡住时直接看教程评论区/Issues
- 有多个语言版本时先选你最熟悉的那门

Related skills