# Agent Guidelines for Documenso ## Build/Test/Lint Commands - `npm run build` - Build all packages - `npm run lint` - Lint all packages - `npm run lint:fix` - Auto-fix linting issues - `npm run test:e2e` - Run E2E tests with Playwright - `npm run test:dev -w @documenso/app-tests` - Run single E2E test in dev mode - `npm run test-ui:dev -w @documenso/app-tests` - Run E2E tests with UI - `npm run format` - Format code with Prettier - `npm run dev` - Start development server for Remix app ## Code Style Guidelines - Use TypeScript for all code; prefer `type` over `interface` - Use functional components with `const Component = () => {}` - Never use classes; prefer functional/declarative patterns - Use descriptive variable names with auxiliary verbs (isLoading, hasError) - Directory names: lowercase with dashes (auth-wizard) - Use named exports for components - Never use 'use client' directive - Never use 1-line if statements - Structure files: exported component, subcomponents, helpers, static content, types ## Error Handling & Validation - Use custom AppError class when throwing errors - When catching errors on the frontend use `const error = AppError.parse(error)` to get the error code - Use early returns and guard clauses - Use Zod for form validation and react-hook-form for forms - Use error boundaries for unexpected errors ## UI & Styling - Use Shadcn UI, Radix, and Tailwind CSS with mobile-first approach - Use `