What's new
- New Rule 3: Keep units small and cohesive — file/function size discipline promoted to a first-class commandment. Targets the failure mode where agents pile every concern into one giant file.
- v1.1.0 rules #2 Surface uncertainty and #3 Offer options merged into one. Both addressed the same trigger (unclear requirements), so consolidation tightened the contract without losing intent.
Ten Commandments — behavior changes
- #2 merged: "Surface uncertainty; offer options." If requirements are unclear, ask. If multiple valid interpretations, present 2–3 reasonable approaches and recommend the simplest sustainable one. If the request is risky, say so.
- #3 new: "Keep units small and cohesive." One file = one purpose; one function = one job. Functions ≤50 lines, nesting ≤4. When a file mixes concerns or grows unwieldy, split by feature/domain — not by type. Cohesion beats line count.
Why no file-line cap?
Cross-checked Google (Java/Python/TS), PEP 8, Linux kernel, ESLint, and Pylint style guides — no major industry guide enforces a file-line cap. An earlier draft included "~200–400 lines per file"; dropped because the number had no industry consensus backing and risked cargo-cult splitting (290-line files passing the rule while still violating cohesion). Function-line (≤50) and nesting (≤4) thresholds remain because ESLint defaults + Linux kernel + Google Python guidance all align there.
Migration
- Symlink users:
git pullyour clone; all linked CLIs (Claude Code, Codex, Gemini, OpenCode) auto-update. - Direct copy users: re-
curlraw files from the new tag.
Compat
AGENTS.md↔CLAUDE.mdbyte-identical.- Commandment count unchanged: 10.
- No removed rules. Rules 2 and 3 from v1.1.0 are folded into the new #2.
Detailed reasoning
See log/changelog-2026-05-18.md for the full decision log, option comparison, and best-practice research.