Files
Integration-kit/book
wtclaude 3979fa5abf
All checks were successful
PR Checks / prose (pull_request) Successful in 7s
PR Checks / template (pull_request) Successful in 33s
docs(book): teach the derived release version, and move the template onto it
The template shipped the declared-version release engine the reference module
has just abandoned: publish when a push to `main` leaves `module.json` at a
version with no release yet. Both flavours of the workflow move to the engine
`link`, `installer` and now Module-uo run - feat!/BREAKING CHANGE -> major,
feat -> minor, fix|perf -> patch - with `module.json` kept as a floor and a
`workflow_dispatch` backdoor for a manifest change with no releasable code
behind it. The tag is the number that ships, and the job writes it into the
`module.json` inside the bundle.

The chapter keeps the declared model in view rather than deleting it, because
the reason it was abandoned is the part a reader needs: its cost is paid on
every release, and the drift it prevents is something review catches anyway. A
week of merged work in the reference module produced no bundle at all.

Also carried over from the same pass: a tag pushed without a release behind it
is recovered instead of standing down forever, and the changelog moved into the
plan step (so assemble clears `$OUT`, not `dist/`).

Kept: the `# CHANGE THESE` banner, the exclusion list from the acceptance run's
F4, and the GitHub twin's `MODULE_SOURCE_HOSTS` note.

checkLinks, checkRenameSites and checkChapterPaths pass.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-19 13:01:51 -05:00
..

The book

Four chapters, in the order the work happens.

Read the dry run before any of them — a complete module designed on paper for a second game, and the shortest honest picture of the whole job.

# Chapter What it covers
1 Your first module in twenty minutes Copy the template, rename it, build it, install it, see a page. No theory.
2 The website module The bulk of the work: module.json, register(ctx, api), the schema fragment, the client chunk, packaging, and what a module must never do.
3 The sidecar Why the website never talks to a game server, what "persist before you forward" means, and what a thin sidecar is.
4 The game-side plugin The least code and the highest stakes: never block the game thread.

Chapters 1 and 2 quote template/, which CI builds against a pinned core, so their code is a tree that is proved rather than prose that looks like one. Chapters 3 and 4 cite uo-link and servuo-plugins by file and identifier rather than by line, on purpose: those repositories move for their own reasons and a line number in a book is wrong the moment they do.

What is normative, and what is here

Nothing in these chapters is. Where a chapter and one of these disagree, the document is right and the chapter has a bug — say so:

Authority For
MODULE_API.md Everything a module may do.
MODULE_SYSTEM.md Why the module system is shaped this way, and how a module is installed and removed.
link/PLAN.md + INTEGRATION.md The game↔sidecar wire protocol, as one real sidecar implements it.

The chapters teach: the order to do things in, the reasoning, and the mistakes that cost this project time.