# Claude Code Project Guidelines ## Project Overview A unified web dashboard aggregating Trello (PRIMARY), Todoist, Obsidian, and PlanToEat. **Stack:** Go backend + HTMX + Tailwind CSS + SQLite. ## Key Documents (Read These First) | Document | Purpose | When to Read | |----------|---------|--------------| | `DESIGN.md` | Authoritative design doc: architecture, patterns, visual design, dev guide | Before any significant work | | `SESSION_STATE.md` | Current task state, next steps | Start of every session | | `docs/adr/*.md` | Architecture Decision Records | Before implementing features in that area | ### Multi-Agent Workflow This project uses a three-role development workflow. **Read your role definition before starting work:** | Role | Definition File | Responsibilities | |------|-----------------|------------------| | Architect | `ARCHITECT_ROLE.md` | Plans, documents, creates ADRs. Does NOT edit code. | | Implementor | `IMPLEMENTOR_ROLE.md` | Executes plans, writes code, runs tests. | | Reviewer | `REVIEWER_ROLE.md` | Reviews code quality and tests. Does NOT edit code. | **Handoff docs:** `instructions.md` (Architect → Implementor), `review_feedback.md` (Reviewer → Implementor) ## Efficiency & Token Management - **Context Minimization:** Do not read entire files if `grep`, `sed`, or `ls` can answer a question. - **Surgical Edits:** Perform small, targeted file edits. Avoid rewriting entire files for single changes. - **Dependency Awareness:** Use `go test`, `go build`, and `lint` to verify state rather than asking the agent to "think" through logic. - **Proactive Checkpointing:** Treat every 3-4 turns as a potential session end. Update `SESSION_STATE.md` frequently. ## Workflow: TDD — ALWAYS Write Tests First **Every bug fix and feature MUST follow Test-Driven Development:** 1. **Red:** Write a failing test that reproduces the bug or specifies the new behavior. 2. **Green:** Write the minimum code to make the test pass. 3. **Refactor:** Clean up if needed, keeping tests green. **No exceptions.** Do not skip to writing production code. If you find a bug, write a test that fails first, then fix it. This applies to template assertions, handler logic, store queries, and JS behavior (via template content tests). ### Plan-then-Execute 1. **Discovery:** Use terminal tools to locate relevant Go code/handlers. 2. **Planning:** Propose a specific plan and **wait for user confirmation** before editing. 3. **Execution:** Apply changes incrementally, verifying with `go test ./...`. 4. **Handoff:** If a task is incomplete or the user mentions "limit" or "handoff," immediately summarize progress in `SESSION_STATE.md`. ## Essential Commands - **Run:** `go run cmd/dashboard/main.go` - **Test:** `go test ./...` - **Build:** `go build -o dashboard cmd/dashboard/main.go` ## State Management - **SESSION_STATE.md:** The source of truth for resuming work. Must include: - Current Task Goal - Completed Items - **Next 3 Specific Steps** - **Status tags:** `[TODO]` → `[IN_PROGRESS]` → `[REVIEW_READY]` → `[APPROVED]` (or `[NEEDS_FIX]`) ## Technical Context - **Trello is PRIMARY:** Key + Token required in query params. - **Architecture:** chi router → Handlers (`internal/handlers/`) → Store (`internal/store/sqlite.go`). - **Errors:** Partial data/cache fallback preferred over hard failure. - **Full details:** See `DESIGN.md` → Architecture section. ## Coding Style - Use concise, idiomatic Go. - Avoid verbose explanations or comments for self-evident logic. - Prioritize terminal-based verification over manual code review. - **Patterns:** See `DESIGN.md` → Development Guide for handler/template patterns. ## Documentation - **ADR-first:** Capture architectural decisions in `docs/adr/*.md`, not one-off design docs. - **Update DESIGN.md** for new features, endpoints, or schema changes. - **Do NOT create** standalone design documents—use ADRs instead.