Files
automaker/CLAUDE.md
Kacper 85dc631250 refactor: consolidate shared packages and eliminate code duplication
- Update 26+ files to import secureFs from @automaker/platform
- Create shared type files: github.ts, worktree.ts, claude.ts in libs/types
- Create exec-utils.ts for cross-platform shell execution
- Delete redundant wrapper files: secure-fs.ts, stream-processor.ts, enhancement-prompts.ts
- Update GitHub routes to use createLogError pattern
- Add isENOENT helper to routes/common.ts
- Fix test imports to use @automaker/prompts and @automaker/platform

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 00:31:23 +01:00

3.2 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

Automaker is an autonomous AI development studio - a Kanban-based application where users describe features and AI agents (powered by Claude Agent SDK) automatically implement them. It runs as an Electron desktop app or in web browser mode.

Commands

# Install dependencies
npm install

# Build shared packages (REQUIRED before running)
npm run build:packages

# Development
npm run dev               # Interactive mode selector
npm run dev:electron      # Electron desktop app
npm run dev:web           # Web browser mode (localhost:3007)
npm run dev:server        # Backend server only

# Testing
npm run test              # UI E2E tests (Playwright)
npm run test:headed       # UI tests with visible browser
npm run test:server       # Server unit tests (Vitest)
npm run test:packages     # Shared package tests

# Linting & Formatting
npm run lint              # ESLint
npm run format            # Prettier
npm run format:check      # Check formatting

# Building
npm run build             # Build Next.js app
npm run build:electron    # Build Electron distribution

Architecture

Monorepo Structure (npm workspaces)

apps/
├── ui/          # Electron + Vite + React frontend (@automaker/ui)
└── server/      # Express + WebSocket backend (@automaker/server)

libs/            # Shared packages (@automaker/*)
├── types/       # Shared TypeScript interfaces
├── utils/       # Common utilities
├── prompts/     # AI prompt templates
├── platform/    # Platform-specific code (paths, security)
├── git-utils/   # Git operations
├── model-resolver/    # AI model configuration
└── dependency-resolver/ # Dependency management

Key Patterns

State Management (UI): Zustand stores in apps/ui/src/store/

  • app-store.ts - Main application state (features, settings, themes)
  • setup-store.ts - Project setup wizard state

Routing (UI): TanStack Router with file-based routes in apps/ui/src/routes/

Backend Services: Express + WebSocket in apps/server/src/

  • Services in /services/ handle business logic
  • Routes in /routes/ define API endpoints
  • Providers in /providers/ abstract AI model integrations

Provider Architecture: Model-based routing via ProviderFactory

  • ClaudeProvider wraps @anthropic-ai/claude-agent-sdk
  • Designed for easy addition of other providers

Feature Storage: Features stored in .automaker/features/{id}/feature.json

Communication:

  • Electron: IPC via preload script (apps/ui/src/preload.ts)
  • Web: HTTP API client (apps/ui/src/lib/http-api-client.ts)

Important Files

  • apps/ui/src/main.ts - Electron main process
  • apps/server/src/index.ts - Server entry point
  • apps/ui/src/lib/electron.ts - IPC type definitions
  • apps/server/src/services/agent-service.ts - AI agent session management
  • apps/server/src/providers/provider-factory.ts - Model routing

Development Notes

  • Always run npm run build:packages after modifying any libs/* package
  • Server runs on port 3008 by default
  • UI runs on port 3007 in web mode
  • Authentication: Set ANTHROPIC_API_KEY env var or configure via Settings