Files
leadchat/AGENTS.md
Sojan Jose a295d5b61d chore: Add development guidelines documentation for AI Agents (#11243)
Added `AGENTS.md` containing development guidelines, build commands,
code style conventions, and project-specific instructions for easier
onboarding and consistent development practices. Additionally symlink
for `CLAUDE.md` and `windsurf`
2025-05-16 19:23:10 -07:00

2.1 KiB
Raw Blame History

Chatwoot Development Guidelines

Build / Test / Lint

  • Setup: bundle install && pnpm install
  • Run Dev: pnpm dev or overmind start -f ./Procfile.dev
  • Lint JS/Vue: pnpm eslint / pnpm eslint:fix
  • Lint Ruby: bundle exec rubocop -a
  • Test JS: pnpm test or pnpm test:watch
  • Test Ruby: bundle exec rspec spec/path/to/file_spec.rb
  • Single Test: bundle exec rspec spec/path/to/file_spec.rb:LINE_NUMBER
  • Run Project: overmind start -f Procfile.dev

Code Style

  • Ruby: Follow RuboCop rules (150 character max line length)
  • Vue/JS: Use ESLint (Airbnb base + Vue 3 recommended)
  • Vue Components: Use PascalCase
  • Events: Use camelCase
  • I18n: No bare strings in templates; use i18n
  • Error Handling: Use custom exceptions (lib/custom_exceptions/)
  • Models: Validate presence/uniqueness, add proper indexes
  • Type Safety: Use PropTypes in Vue, strong params in Rails
  • Naming: Use clear, descriptive names with consistent casing
  • Vue API: Always use Composition API with <script setup> at the top

Styling

  • Tailwind Only:
    • Do not write custom CSS
    • Do not use scoped CSS
    • Do not use inline styles
    • Always use Tailwind utility classes
  • Colors: Refer to tailwind.config.js for color definitions

General Guidelines

  • MVP focus: Least code change, happy-path only
  • No unnecessary defensive programming
  • Break down complex tasks into small, testable units
  • Iterate after confirmation
  • Avoid writing specs unless explicitly asked
  • Remove dead/unreachable/unused code
  • Dont write multiple versions or backups for the same logic — pick the best approach and implement it
  • Don't reference Claude in commit messages

Project-Specific

  • Translations:
    • Only update en.yml and en.json
    • Other languages are handled by the community
    • Backend i18n → en.yml, Frontend i18n → en.json
  • Frontend:
    • Use components-next/ for message bubbles (the rest is being deprecated)

Ruby Best Practices

  • Use compact module/class definitions; avoid nested styles