Goose is open source and welcomes contributions from the community! This guide will help you get started with contributing code, documentation, and more.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/block/goose/llms.txt
Use this file to discover all available pages before exploring further.
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