diff --git a/CLAUDE.md b/CLAUDE.md index 6fc4c75..16abb28 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -44,16 +44,35 @@ Two-process system communicating over SignalR (`127.0.0.1:47821`): - Views use compiled bindings (`x:DataType`) - ViewModels use `[ObservableProperty]` and `[RelayCommand]` source generators +## Working style (autonomous) + +For any non-trivial feature, bug, or change, run this loop without hand-holding: + +1. **Brainstorm first** (superpowers:brainstorming) — ask clarifying questions one at a time, propose 2–3 options with a recommendation, present a short design, get approval before building. +2. **Write it down** — a spec in `docs/superpowers/specs/YYYY-MM-DD--design.md` and a step-by-step plan in `docs/superpowers/plans/` (superpowers:writing-plans). Commit the docs. +3. **Implement on main** with superpowers:subagent-driven-development — one subagent per task, TDD, build + test, commit per task with Conventional Commits. Once the plan is approved, do NOT pause for re-approval between tasks; only stop for genuine decisions or blockers. +4. **Trust but verify** — read each subagent's diff and run the build/tests yourself before marking a task done. +5. **Bugs** → superpowers:systematic-debugging (find the root cause before any fix). +6. **Never claim UI works without running it** — explicitly flag visual-verification gaps for the user to check. + +Commit freely (per task + the spec/plan docs). Never push without asking. + ## Building & Testing -`dotnet build ClaudeDo.slnx` requires .NET 9; on .NET 8 build individual projects instead. +`dotnet build ClaudeDo.slnx` requires .NET 9; on .NET 8 build individual projects with `-c Release` (a running Worker locks the `Debug` output). ```bash -dotnet build src/ClaudeDo.App/ClaudeDo.App.csproj # pulls in Ui + Data -dotnet build src/ClaudeDo.Worker/ClaudeDo.Worker.csproj -dotnet test tests/ClaudeDo.Worker.Tests # also: Data.Tests, Ui.Tests, Installer.Tests, Releases.Tests +dotnet build src/ClaudeDo.App/ClaudeDo.App.csproj -c Release # pulls in Ui + Data +dotnet build src/ClaudeDo.Worker/ClaudeDo.Worker.csproj -c Release +dotnet test tests/ClaudeDo.Worker.Tests/ClaudeDo.Worker.Tests.csproj -c Release # also: Data.Tests, Ui.Tests, Localization.Tests, Installer.Tests, Releases.Tests ``` +### Gotchas +- **Subagents:** use the `sonnet` model; stage files explicitly by path — never `git add -A` (parallel sessions often leave unrelated WIP in the tree). +- **Icons:** `PathIcon` *fills* its geometry. Line-art/stroke icons must be authored as filled geometry, or rendered with a stroked `Path` — otherwise they render invisible. +- **Localization:** `locales/en.json` and `locales/de.json` keys must stay in parity (Localization.Tests enforces it). +- **Test fakes:** changing `IWorkerClient` / `WorkerHub` / ViewModel constructors breaks hand-rolled fakes in both test projects — update them. + ## Docs - `docs/plan.md` — full architecture and design spec