diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2f412f3574..b49a62fa9b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1 +1,3 @@ Please review the contributing documentation on our website: https://actualbudget.org/docs/contributing/ + +If you plan to use AI tools when contributing, please also read our [AI Usage Policy](https://actualbudget.org/docs/contributing/ai-usage-policy). diff --git a/packages/docs/docs-sidebar.js b/packages/docs/docs-sidebar.js index f00b1da930..e4ff3366bf 100644 --- a/packages/docs/docs-sidebar.js +++ b/packages/docs/docs-sidebar.js @@ -297,6 +297,7 @@ const sidebars = { 'contributing/project-details/advice', ], }, + 'contributing/ai-usage-policy', 'contributing/development-setup', 'contributing/testing', 'contributing/code-style', diff --git a/packages/docs/docs/contributing/ai-usage-policy.md b/packages/docs/docs/contributing/ai-usage-policy.md new file mode 100644 index 0000000000..9d33bff31c --- /dev/null +++ b/packages/docs/docs/contributing/ai-usage-policy.md @@ -0,0 +1,50 @@ +--- +title: AI Usage Policy +--- + +Actual Budget welcomes contributions from everyone, including contributions that are created with the help of AI tools such as GitHub Copilot, Cursor, Claude, ChatGPT, and similar assistants. This page describes what we expect from contributors who use these tools. + +## Using AI for code + +It is OK to use AI to generate code, draft tests, fix bugs, or help you navigate the codebase. AI is a tool, and when it helps you ship a good change, we are happy to have it. + +If you use an AI-powered editor like Cursor, see the [Cursor IDE guide](./leadership/cursor-ide.md) for setup tips. + +Regardless of whether the code is written by you or by an AI, it still has to meet the project's standards: + +- It must pass `yarn typecheck` and `yarn lint:fix`. +- Relevant tests should pass — see the [Testing Guide](./testing.md). +- It must follow the project's [Code Style and Conventions](./code-style.md). +- User-facing strings must be translated. + +## Interacting with maintainers should be human + +When it comes to interacting with the project — PR descriptions, code review replies, issue comments, and discussion threads — we expect to interact with real humans, not with AI-generated replies. + +Please do not: + +- Paste a reviewer's comment back into an AI and post the raw output as your reply. +- Generate issue or PR descriptions wholesale from AI without reading and editing them yourself. +- Use AI to argue with maintainers on your behalf. + +Maintainer bandwidth is limited, and the conversation around a change is where most of the value of code review lives. If that conversation is between an AI on one side and a human on the other, it stops being useful. + +## Disclose when AI was used + +If AI was used to generate a significant portion of an issue, PR, or the code it contains, please say so in the submission. A short note in the PR description is enough — for example, "The initial implementation was drafted with Claude and then reviewed and edited by me." + +Issues and pull requests that appear to be AI-generated but do not disclose it may be closed without review. Contributors who repeatedly submit undisclosed AI content, or who ignore this policy, may be blocked from contributing. + +## You are responsible for what you submit + +Before you open an issue or a PR, you should: + +- **Understand the code.** Read what the AI produced. Be able to explain what each change does and why it is needed. +- **Verify it works.** Run it locally, run the tests, and confirm the behavior you are claiming. +- **Edit the prose.** AI-generated descriptions are often long, repetitive, or inaccurate. Trim them and make sure they match what the code actually does. + +You are the author of the contribution. The AI is not. + +## A note on automated AI agents + +This page is for human contributors who are using AI as an assistant. Autonomous AI agents operating directly on this repository (for example, via Claude Code or Cursor Agents) follow a separate set of rules — they must prefix commits and PR titles with `[AI]` and apply the `AI generated` label. Those rules live in [`AGENTS.md`](https://github.com/actualbudget/actual/blob/master/AGENTS.md) and [`.github/agents/pr-and-commit-rules.md`](https://github.com/actualbudget/actual/blob/master/.github/agents/pr-and-commit-rules.md). diff --git a/packages/docs/docs/contributing/index.md b/packages/docs/docs/contributing/index.md index b161667eb1..4e1f09d76f 100644 --- a/packages/docs/docs/contributing/index.md +++ b/packages/docs/docs/contributing/index.md @@ -146,6 +146,7 @@ The settings screen needs to also remain a place where core settings lives, we d ## Additional Resources +- [AI Usage Policy](./ai-usage-policy.md) - What we expect when you use AI tools to contribute - [Development Setup](./development-setup.md) - Set up your development environment - [Testing Guide](./testing.md) - Learn about testing strategies and how to run tests - [Code Style Guide](./code-style.md) - Coding conventions and style guidelines diff --git a/upcoming-release-notes/7548.md b/upcoming-release-notes/7548.md new file mode 100644 index 0000000000..b9aa89cd08 --- /dev/null +++ b/upcoming-release-notes/7548.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [MatissJanis] +--- + +docs: AI usage policy for contributors