AI Contribution Policy

Guidelines for using AI coding tools when contributing to Elmo.

AI Tools Are Welcome

We encourage the use of AI coding assistants (Copilot, Cursor, Claude, ChatGPT, etc.) when contributing to Elmo. AI tools can help you write code faster, understand unfamiliar parts of the codebase, and generate tests.

Guidelines

Do

  • Use AI to understand the codebase — Ask it to explain how a module works or trace a data flow
  • Use AI for boilerplate — Generating repetitive code, tests, and type definitions
  • Use AI for code review — Have it check your changes for bugs or edge cases before submitting a PR
  • Use AI for documentation — Writing clear commit messages, PR descriptions, and code comments
  • Review all AI-generated code — You are responsible for every line in your PR

Don't

  • Don't submit AI output without review — Always read, understand, and test generated code before committing
  • Don't use AI to generate large, untested features — Break work into small, reviewable pieces
  • Don't rely on AI for security-critical code — Authentication, authorization, and cryptographic code should be carefully hand-reviewed
  • Don't let AI add unnecessary dependencies — Verify that any suggested packages are actually needed and well-maintained
  • Don't use AI to circumvent code review — The goal is quality, not speed

Code Quality Standards

Whether you write code by hand or with AI assistance, the same standards apply:

  • All code must pass pnpm lint and pnpm format
  • Tests should cover new functionality
  • Comments should explain why, not what (avoid narrating obvious code)
  • PR descriptions should clearly explain the motivation and approach
  • Follow existing patterns in the codebase

Attribution

You don't need to disclose whether AI tools were used in your contribution. What matters is that the code is correct, well-tested, and follows the project's conventions.

Automated Code Generation

Some parts of the codebase are generated (e.g., API docs from the OpenAPI spec, Drizzle migrations). These use deterministic scripts, not AI. Do not manually edit generated files — instead, modify the source and re-run the generation command.

Was this page helpful?