Files
ClaudeDo/CLAUDE.md

2.0 KiB

ClaudeDo

A desktop task management app that executes tasks autonomously via Claude CLI in isolated git worktrees.

Architecture

Two-process system communicating over SignalR (127.0.0.1:47821):

  • ClaudeDo.App — Avalonia desktop entry point, DI container setup
  • ClaudeDo.Ui — Views, ViewModels, SignalR client (MVVM with CommunityToolkit.Mvvm)
  • ClaudeDo.Data — SQLite data layer, repositories, models, GitService
  • ClaudeDo.Worker — ASP.NET Core hosted service, task queue, Claude CLI runner
  • ClaudeDo.Worker.Tests — xUnit integration tests with real SQLite and real git

Tech Stack

  • .NET 8.0, Avalonia 12.0.0 (Fluent theme)
  • SQLite (WAL mode) via Microsoft.Data.Sqlite — raw ADO.NET, no ORM
  • SignalR for real-time IPC
  • CommunityToolkit.Mvvm ([ObservableProperty], [RelayCommand])
  • Git worktrees for task isolation

Key Paths

  • DB: ~/.todo-app/todo.db
  • UI config: ~/.todo-app/ui.config.json
  • Worker config: ~/.todo-app/worker.config.json
  • Logs: ~/.todo-app/logs/
  • Worktrees: configured per worker (sibling or central strategy)
  • Schema: schema/schema.sql (embedded resource in ClaudeDo.Data)

Conventions

  • Repository pattern — each entity has its own async repository
  • All data operations are async with CancellationToken support
  • Task status flow: Manual | Queued -> Running -> Done | Failed
  • Worktree state flow: Active -> Merged | Discarded | Kept
  • Tags "agent" and "manual" are seeded; "agent" tag marks tasks for automated queue pickup
  • Commit messages use conventional format: {commitType}(slug): title
  • Views use compiled bindings (x:DataType)
  • ViewModels use [ObservableProperty] and [RelayCommand] source generators

Building & Testing

dotnet build ClaudeDo.slnx
dotnet test tests/ClaudeDo.Worker.Tests

Docs

  • docs/plan.md — full architecture and design spec
  • docs/open.md — verification checklist and improvement backlog
  • docs/improvement-plan.md — prioritized improvement items