ratatui/.github/copilot-instructions.md
Josh McKinney 572749f388
chore: update contributing guidelines and add copilot-instructions (#1998)
See
https://docs.github.com/en/copilot/how-tos/agents/copilot-code-review/using-copilot-code-review

These instructions will be used by copilot when it performs automated PR
reviews, and helps provide guardrails for our standards. Over time we
might grow these to capture any consistent problems that we start seeing
when reviewing.

---------

Co-authored-by: Orhun Parmaksız <orhun@archlinux.org>
2025-07-19 16:02:13 -07:00

4.1 KiB

GitHub Copilot Code Review Instructions

General Review Principles

Pull Request Size and Scope

  • Flag large PRs: Comment if a PR changes more than 500 lines or touches many unrelated areas
  • Suggest splitting: Recommend breaking large changes into smaller, focused PRs
  • Question scope creep: Ask about unrelated changes that seem outside the PR's stated purpose

Code Quality and Style

  • Check adherence to style guidelines: Verify changes follow the project's Rust conventions in CONTRIBUTING.md
  • Verify xtask compliance: Ensure cargo xtask format and cargo xtask lint would pass
  • Look for AI-generated patterns: Be suspicious of verbose, overly-commented, or non-idiomatic code

Architectural Considerations

  • Reference ARCHITECTURE.md: Point to ARCHITECTURE.md for changes affecting crate boundaries
  • Question fundamental changes: Flag modifications to core configuration, linting rules, or build setup without clear justification
  • Verify appropriate crate placement: Ensure changes are in the correct crate per the modular structure

Breaking Changes and Deprecation

  • Require deprecation: Insist on deprecation warnings rather than immediate removal of public APIs
  • Ask for migration path: Request clear upgrade instructions for breaking changes
  • Suggest feature flags: Recommend feature flags for experimental or potentially disruptive changes
  • Reference versioning policy: Point to the requirement of at least one version notice before removal

Testing and Documentation

  • Verify test coverage: Ensure new functionality includes appropriate tests
  • Check for test removal: Question any removal of existing tests without clear justification
  • Require documentation: Ensure public APIs are documented with examples
  • Validate examples: Check that code examples are minimal and follow project style

Specific Areas of Concern

Configuration Changes

  • Lint configuration: Question changes to .clippy.toml, rustfmt.toml, or CI configuration
  • Cargo.toml modifications: Scrutinize dependency changes or workspace modifications
  • Build system changes: Require justification for xtask or build process modifications

Large Code Additions

  • Question necessity: Ask if large code additions could be implemented more simply
  • Check for duplication: Look for code that duplicates existing functionality
  • Verify integration: Ensure new code integrates well with existing patterns

File Organization

  • Validate module structure: Ensure new modules follow the project's organization
  • Check import organization: Verify imports follow the std/external/local grouping pattern
  • Review file placement: Confirm files are in appropriate locations per ARCHITECTURE.md

Comment Templates

For Large PRs

This PR seems quite large with changes across multiple areas. Consider splitting it into smaller, focused PRs:
- Core functionality changes
- Documentation updates  
- Test additions
- Configuration changes

See our [contribution guidelines](https://github.com/ratatui/ratatui/blob/main/CONTRIBUTING.md#keep-prs-small-intentional-and-focused) for more details.

For Breaking Changes

This appears to introduce breaking changes. Please consider:
- Adding deprecation warnings instead of immediate removal
- Providing a clear migration path in the PR description
- Following our [deprecation policy](https://github.com/ratatui/ratatui/blob/main/CONTRIBUTING.md#deprecation-notice)

For Configuration Changes

Changes to project configuration (linting, formatting, build) should be discussed first. Please explain:
- Why this change is necessary
- What problem it solves
- Whether it affects contributor workflow

For Style Issues

Please run `cargo xtask format` and `cargo xtask lint` to ensure code follows our style guidelines. See [CONTRIBUTING.md](https://github.com/ratatui/ratatui/blob/main/CONTRIBUTING.md#code-formatting) for details.