Aligns the repo's docs with the new website aesthetic (cream + blueprint, print-manual tone) without breaking site/build.js, which parses README + ROADMAP + glossary into site/data.js. assets/banner.svg Replaces the dark gradient + coral coral banner with a cream + blueprint reference-manual banner: VT323 wordmark, dotted-paper background, FIG_000 caption, isometric stack diagram of the 20-phase curriculum, ASCII rule band along the bottom edge. README.md (-640 lines) Drops the marketing intro: hype quote, "Why This Course?" comparison table, "AI-Native Learning" prose, "Built-in Skills" table, "Every Lesson Ships Something" four-card row, the colorful 20-phase pill nav, decorative emojis throughout headings, the per-lesson Type shield image ( → plain "Build" / "Learn"), and the per-lesson Lang emoji flags (🐍 🟦 🦀 🟣 ⚛️ → plain "Python, TypeScript, Rust" — both forms are parser-equivalent in build.js). Adds a manual-style preface, terse "How each lesson is built" structural doc, monochrome blueprint-themed shields.io badges (license, lessons, phases, stars, web), and a contents anchor. Phase 0 heading switches from the shield-image form to the plain ### Phase 0: Setup & Tooling `12 lessons` form (build.js supports both). Phase 1-19 <details> headers drop their decorative emoji prefix (🟣 🔵 🟢 🟠 …) — build.js's <summary> regex makes the prefix optional. Verified: node site/build.js diff before/after shows identical phase count (20), lesson count (416), glossary terms (83), and identical PHASES content modulo Phase 0's description (emoji + asterisks dropped on purpose). All 416 lesson rows preserved with correct types/langs. ROADMAP.md Lighter touch: keeps the ✅ 🚧 ⬚ status glyphs (parser-critical), adds a one-line note that build.js parses these glyphs and they must not change shape, slight cleanup of the legend separator. CONTRIBUTING.md Adds a load-bearing section for new contributors: explains that README and ROADMAP feed site/build.js, lists the parser-critical patterns (phase header forms, lesson table column shape, status glyphs), and gives the validation command (run node site/build.js, git diff site/data.js should be timestamp-only). Replaces the "Thank you for wanting to make AI education better for everyone" opener with a more direct intro and adds a Style section that matches the manual's voice. site/data.js Auto-regenerated by node site/build.js. Only field that changes is PHASES[0].desc (Phase 0 description, which we intentionally rewrote to drop the emoji + italics).
4.4 KiB
Contributing
Lessons, translations, fixes, outputs — all welcome. One contribution per pull request keeps reviews fast and lets contributor counts and credit work correctly.
Important: the README and ROADMAP feed the website
site/build.js parses README.md, ROADMAP.md, and glossary/terms.md to
generate site/data.js. Two patterns must stay intact in any pull request that
touches those files:
- Phase headers in either
### Phase N: Name \X lessons`form orPhase N — Name ...
` form.X lessons... Description - Lesson tables with the column shape
| # | Lesson | Type | Lang |(or| # | Project | Combines | Lang |for capstone tables). TheLangcolumn accepts plain text (Python, TypeScript) or the legacy emoji flags (🐍 🟦 🦀 🟣 ⚛️); both are parser-equivalent. - ROADMAP status glyphs (
✅,🚧,⬚) on phase headers and lesson rows. Do not replace them with text — the parser keys off the exact characters.
Run node site/build.js after editing those files; git diff site/data.js
should show only the timestamp change if your edit was structural-safe.
Ways to Contribute
1. Add a New Lesson
Each lesson lives in phases/XX-phase-name/NN-lesson-name/ with this structure:
NN-lesson-name/
├── code/ At least one runnable implementation
├── notebook/ Jupyter notebook for experimentation (optional)
├── docs/
│ └── en.md Lesson documentation (required)
└── outputs/ Prompts, skills, or agents this lesson produces (if applicable)
Lesson doc format (en.md):
# Lesson Title
> One-line motto — the core idea in one sentence.
## The Problem
Why does this matter? What can't you do without this?
## The Concept
Explain with diagrams, visuals, and intuition. Code comes later.
## Build It
Step-by-step implementation from scratch.
## Use It
Now use a real framework or library to do the same thing.
## Ship It
The prompt, skill, agent, or tool this lesson produces.
## Exercises
1. Exercise one
2. Exercise two
3. Challenge exercise
2. Add a Translation
Create a new file in any lesson's docs/ folder:
docs/
├── en.md (English — always required)
├── zh.md (Chinese)
├── ja.md (Japanese)
├── es.md (Spanish)
├── hi.md (Hindi)
└── ...
Keep the same structure as the English version. Translate content, not code.
3. Add an Output
If a lesson should produce a reusable prompt, skill, agent, or MCP server:
- Create it in the lesson's
outputs/folder - Add a reference in the top-level
outputs/index
Prompt format:
---
name: prompt-name
description: What this prompt does
phase: 14
lesson: 01
---
[System prompt or template here]
Skill format:
---
name: skill-name
description: What this skill teaches
version: 1.0.0
phase: 14
lesson: 01
tags: [agents, loops]
---
[Skill content here]
4. Fix Bugs or Improve Existing Lessons
- Fix code that doesn't run
- Improve explanations
- Add better diagrams
- Update outdated information
5. Add Exercises or Projects
More exercises and projects are always welcome, especially ones that connect multiple phases.
Guidelines
- Code must run. Every code file should execute without errors with the listed dependencies.
- No comments in code. Code should be self-explanatory. Use the docs for explanation.
- Best language for the job. Don't force Python where TypeScript or Rust is the better choice.
- Build from scratch first. Always implement the concept from first principles before showing the framework version.
- Keep it practical. Theory serves practice, not the other way around.
- No AI slop. Write like a human. Be direct. Cut filler.
Pull Request Process
- Fork the repository
- Create a feature branch (
git checkout -b add-lesson-phase3-gradient-descent) - Make your changes
- Ensure all code runs
- Submit a pull request with a clear description
Code of Conduct
See CODE_OF_CONDUCT.md. Be kind, be helpful, be constructive.
Style
- Direct prose. Cut filler. Match the manual's tone, not marketing copy.
- No decorative emojis in headings. Lang column emoji flags are the one exception and only because the parser maps them.
- Code runs as-is with the dependencies listed in the lesson.
- Build from scratch first, framework second.