- commit
- 327871c53ba597dfde8a19285d4b51a10613af2c
- parent
- 3c8fa3d20eeff9b127c9c7989cd5d10f0d85b3f1
- parent
- 23151feaef383a3a622c34c5223c43d5e606754b
- author
- Dami <dami.etoile@gmail.com>
| A | CLAUDE.md | 23 | +++++++++++++++++++++++ |
| M | docs/ | 6 | ++++++ |
@@ -0,0 +1,23 @@
1+# Working on 0122+3+Read [docs/UX.md](docs/UX.md), [docs/extending.md](docs/extending.md) and4+[docs/testing.md](docs/testing.md) before changing code.5+6+## No broken windows7+8+Noise that stays becomes invisible, and then real problems hide in it.9+10+- `make check` passes before every push: gofmt, vet, `make lint`11+ (staticcheck in every module, doclint, cognitive complexity at most 25,12+ Go files at most 500 lines), unit tests, the excelize oracle and the13+ libghostty e2e tests. A red check is fixed first, not worked around.14+- A warning is fixed where it points, or turned off in its tool's config15+ with the reason written next to it (`staticcheck.conf`). Nothing is left16+ standing because "it's always been there".17+- Docs and comments describe the code as it is and why. How it got there18+ (what changed, what it did before, before and after numbers, which commit <!-- doclint:allow: names the phrases the rule forbids -->19+ or merge, who did it) belongs in commit messages; doclint enforces this.20+ Saying why the code stays compatible with a planned change is fine: that21+ explains the code today. Plans go in ROADMAP.md.22+- No scratch files, debug tests or temporary samples in commits.23+- Visual changes are reviewed in the golden gallery (`make screens`).@@ -93,3 +93,9 @@ It needs vhs 0.12+, ttyd and ffmpeg. The JEV tape talks to `demos/fakejev`, a
9393 local stand-in the target starts on 127.0.0.1, never the real service. On9494 macOS, `demos/lib/ttyd` wraps ttyd so Alt+letter reaches the app. VHS has no9595 mouse commands, so the tapes use the keyboard.96+97+## No broken windows98+99+`make check` must pass before a push, and warnings are fixed or turned100+off with a written reason rather than left standing. The rules are in101+[CLAUDE.md](../CLAUDE.md).