Before You Start
Quick Responsible AI Tips
If you use Goose, Copilot, Claude, or other AI tools to help with your PRs: Good Uses:- Boilerplate code and common patterns
- Test generation
- Docs and comments
- Refactoring for clarity
- Utility functions/helpers
- Security-critical logic
- Complex business rules you don’t understand
- Large architectural or schema changes
- Understand every line of code you submit
- All tests pass locally
- Code follows Goose’s patterns
- Document your changes
- Ask for review if security or core code is involved
Getting Started
Opening Issues
We recommend opening an issue before starting work on larger features or changes. This helps ensure:- The feature aligns with project goals
- No one else is already working on it
- You get early feedback on your approach
Creating a Fork
- Go to https://github.com/block/goose and click “Fork” (top-right corner)
- Clone your fork (not the main repo):
- Add the main repository as upstream:
- Create a branch for your changes:
Keeping Your Fork Up-to-Date
Sync your fork regularly to avoid conflicts:Making Changes
See the Development Setup guide for setting up your environment.Code Quality Standards
Comments:- Write self-documenting code - prefer clear names over comments
- Never add comments that restate what code does
- Only comment for complex algorithms, non-obvious business logic, or “why” not “what”
- No comments on self-evident operations, getters/setters, constructors, or standard Rust idioms
- Don’t make things optional that don’t need to be - the compiler will enforce
- Booleans should default to false, not be optional
- Avoid overly defensive code - trust Rust’s type system
- Use
anyhow::Resultfor error handling - Don’t add error context that doesn’t add useful information (e.g.,
.context("Failed to X")when error already says it failed)
- Clean up existing logs, don’t add more unless for errors or security events
Before Submitting
Run all checks locally:Submitting Your PR
Commit Messages
This project follows Conventional Commits for PR titles:feat:New featurefix:Bug fixdocs:Documentation changesrefactor:Code refactoringtest:Adding or updating testschore:Maintenance tasks
feat: add support for custom MCP serversfix: resolve token count estimation errordocs: update provider configuration guide
Developer Certificate of Origin
All commits must include a sign-off using the--signoff or -s flag:
Opening the Pull Request
- Push your branch to your fork:
- Go to https://github.com/block/goose and click “New Pull Request”
- Select your fork and branch
- Fill out the PR template with:
- Clear description of changes
- Motivation and context
- How to test
- Any breaking changes
Other Ways to Contribute
Beyond code, there are many ways to contribute:- Stars on GitHub: Star the project if you find it valuable
- Ask Questions: Help others by answering questions on Discord
- Give Feedback: Open an issue or start a discussion
- Participate in Events: Join community events on Discord
- Improve Documentation: Enhance existing docs or add new pages
- Help Other Members: Answer questions, review PRs
- Showcase Your Work: Share projects in #share-your-work
- Spread the Word: Share Goose on social media
Getting Help
If you have questions or need help:- Join our Discord
- Open an issue
- Start a discussion