Publish a Book
How to write — or convert an existing book — into the Boring College format and get it listed on the platform.
The idea
Books on Boring College live as GitHub repositories. You write the chapters as
Markdown files, add a small book.yaml
manifest, and we sync it to the platform. That's it.
Because the book is a Git repo, anyone can open a pull request to fix a typo, improve an example, or add a chapter. The same workflow developers use for code, applied to learning.
Already have a book written?
If you have existing Markdown content — a long README, a blog post series, a book draft — you can convert it to Boring College format in minutes.
Option A — Use the AI transformer (recommended)
If you use Claude Code, run this inside the Boring College repo:
/transform-book /path/to/your-book.md
It reads your file (or directory of .md files), splits on H1 headings, generates slugs, writes
book.yaml and all chapter files, and reports the output path.
No content is rewritten — only structure is applied.
Option B — Convert manually
-
Split into chapter files.
Each top-level
# Headingin your source becomes onechapters/NN-slug.mdfile. The H1 must be the first line. -
Number the files.
Prefix each filename with a two-digit index:
01-intro.md,02-getting-started.md, etc. -
Write
book.yamlin the repo root listing title, description, and the chapter filenames in order. - Strip any YAML frontmatter from the chapter files — the syncer does not process frontmatter; the H1 heading is the title.
- Push to a public GitHub repo and submit (see below).
The style
A Boring College book should feel like a very good README — practical, direct, and respectful of the reader's time.
- Short chapters. Each chapter should cover one idea or skill. If a chapter needs more than ~10 minutes to read, consider splitting it.
- Real examples. Show actual code, commands, or output — not pseudocode or hand-wavy illustrations.
- No padding. Skip the intro that explains what the chapter is about to explain. Just explain it.
- Any length. A 3-chapter book is fine if it covers the topic well. A 30-chapter book is fine too. Write as much as the subject needs.
Repository structure
Your GitHub repo should look like this:
my-book/
book.yaml
chapters/
01-introduction.md
02-getting-started.md
03-next-steps.md
README.md
book.yaml
The manifest tells us the title, description, and chapter order.
title: "My Practical Book"
description: "A short, useful description shown in the catalog."
cover: "https://example.com/cover.png" # optional
github: "owner/repo" # optional — links to source repo
exercises: "https://github.com/owner/exercises" # optional
authors: # optional
- name: "Your Name"
url: "https://github.com/yourhandle" # url is optional per author
chapters:
- 01-introduction.md
- 02-getting-started.md
- 03-next-steps.md
titleanddescriptionare required.chapterssets the order. Only listed files are synced.github,exercises, andauthorsare all optional and shown on the book page when present.
Advanced chapter options
Each chapter entry can be a plain filename or an object with optional overrides:
chapters:
- 01-introduction.md # plain string — backward-compatible
- file: 02-setup.md # object form
title: "Setting Up" # optional — overrides the # Heading in the file
slug: setup # optional — overrides the slug derived from the filename
number: 2 # optional — sets sort order explicitly
free: true # optional — marks the chapter as free/paid
- Plain strings and object entries can be mixed freely in the same list.
titleoverrides the# Headingextracted from the Markdown file.slugoverrides the URL slug normally derived from the filename.numbersets the sort order explicitly; if omitted, the chapter's position in the list is used.freecontrols whether the chapter is readable without purchase. If omitted, new chapters default to free and existing chapters keep their current value.
Chapter files
Each chapter is a Markdown file inside the chapters/ directory.
# Introduction
This is the first chapter. The H1 heading becomes the chapter title.
Regular Markdown works: **bold**, `code`, links, lists, tables, code blocks.
```go
fmt.Println("Hello, reader")
```
The first # Heading in the file is used as the chapter title. Everything else renders as the chapter body.
License
Books listed as free on Boring College must be open source. We recommend
CC BY 4.0
for prose or
MIT
for code-heavy books. Include a LICENSE
file in your repo.
Pre-submission checklist
- ☐ Repo is public on GitHub
-
☐
book.yamlis in the repo root withtitle,description, andchapterslist -
☐
All chapter files are in a
chapters/directory and listed inbook.yaml -
☐
Each chapter file starts with a
# Headingon the first line - ☐ No YAML frontmatter in chapter files
-
☐
A
LICENSEfile is present (CC BY 4.0 or MIT recommended)
How to submit
When your repo is ready:
- Make sure the repo is public on GitHub.
- Check that
book.yamlis in the root and all chapters are listed. -
Email [email protected] with:
- The GitHub repo URL
- A one-line description of the book's audience
We review submissions and aim to respond within a few days. If it's a good fit we'll add it to the catalog and set up auto-sync from your repo.
Paid books are not open for public submissions at this time.