Single source of truth for how I build software. This repository closes the gap between an LLM's training data and the current state of the art. AI agents working on any of my projects MUST consult this baseline before making stack, version, or pattern decisions — do not rely on training data for anything covered here.
The bar: production grade, simplicity first, performant and secure out of the box. Boring technology, one static Go binary, hypermedia over JavaScript, security as layered defaults rather than a checklist. Every rule exists to make the default path the correct one — an agent that follows the documents verbatim ships a correct, hardened application without inventing anything.
- Last verified: 2026-08-12
- Format: Markdown only, plus the MIT
LICENSE. No code, no CI, no build steps. Documents are the product. The one piece of tooling is the rootMakefile, which installs the baseline into Claude Code (see below) — it builds nothing.
Follow this protocol top-down. Never skip to a leaf document without reading its parent.
- Identify the project type you are building (e.g. "web application").
- Open the matching document in
project-types/. It defines the mandated stack and links to everything that applies. - Read the linked
stack/documents for language/tool conventions and the linkedpatterns/documents for concrete implementation patterns. - Check
VERSIONS.mdand adopt exactly those versions, the way its version policy prescribes (e.g.go 1.26ingo.mod, never a pinned toolchain patch). If a version in your training data is newer than what is listed here, the baseline wins — flag the discrepancy to the user instead of silently upgrading. - Before declaring work done, walk the matching document in
checklists/.
Rules in these documents use RFC-2119 style keywords: MUST, MUST NOT, SHOULD, MAY.
make install # symlinks this repo to ~/.claude/skills/engineering-baseline
make uninstall # removes the symlinkClaude Code then loads the baseline as a skill (SKILL.md) whenever a
stack, version, or pattern decision comes up. The symlink keeps the repository
the single copy — git pull is the update mechanism. This Makefile is repo
tooling, not the project Makefile that stack/makefile.md
prescribes. That document's rules (including the install-target ban) govern
projects built from the baseline, not the baseline itself.
baseline/
├── checklists/ ← definition of done per project type
│ ├── cli-tool.md
│ ├── library.md
│ └── web-application.md
├── LICENSE ← MIT
├── Makefile ← make install / make uninstall (Claude Code)
├── operations/ ← how projects run in production
│ ├── ci.md
│ ├── cli-release.md
│ └── web-application.md
├── patterns/ ← concrete, copyable implementation patterns
│ ├── css-layout.md
│ ├── css-motion.md
│ ├── css-tokens.md
│ ├── go-auth-sessions.md
│ ├── go-cli.md
│ ├── go-errors-logging.md
│ ├── go-forms-validation.md
│ ├── go-http-server.md
│ ├── go-library.md
│ ├── go-performance.md
│ ├── go-project-layout.md
│ ├── go-sqlite.md
│ ├── go-testing.md
│ └── htmx-server-rendering.md
├── project-types/ ← entry point per kind of project
│ ├── cli-tool.md
│ ├── library.md
│ └── web-application.md
├── README.md ← you are here: navigation protocol
├── SKILL.md ← makes the repo a Claude Code skill
├── stack/ ← per-technology conventions
│ ├── css.md
│ ├── go.md
│ ├── html.md
│ ├── htmx.md
│ └── makefile.md
├── STYLE.md ← how everything for humans is written
└── VERSIONS.md ← pinned versions, dated, with sources
These apply to every project regardless of type:
- Boring technology. Standard library first. Every dependency must justify itself.
- No JavaScript. Interactivity comes from htmx and modern CSS. If a feature seems to require custom JS, redesign the feature (see stack/html.md).
- Server is the source of truth. State lives on the server; the client renders hypermedia.
- Simplicity over cleverness. Code is read far more often than written.
- Current, not bleeding edge. Latest stable versions, never betas/RCs in production.
- Write for humans. Every doc, comment, and prompt passes the 10-year-old test in STYLE.md: point first, short sentences, plain words.
- Adversarial review covers every tagged release: independent reviewers hunt cross-document contradictions, trace every canonical snippet's mechanics end to end, and verify factual claims against upstream sources (Go, htmx, scs, SQLite, systemd, Caddy) — repeated until two consecutive passes find zero defects. Last run: 2026-08-12 over the v1.8.0 additions (11 rounds, 26 defects fixed, converged at two consecutive zero-defect rounds); last full-corpus sweep: 2026-08-11.
- The reference implementation is the executable check. baseline-reference implements these rules end to end and MUST be synced to every tagged release — when a rule is ambiguous, the reference resolves it.
- Every document carries a
Last verified:date. Re-verify at least every 3 months, and always after a major release of Go (Feb/Aug) or htmx. - When updating a version: update
VERSIONS.mdfirst, then any stack document that references behavior of that version, then bump theLast verified:dates. - New recurring decision in a project? Extract it into a pattern document here — the whole point is to never solve the same problem twice.