CONTRIBUTING.mdโข6.57 kB
# ๐ค Contributing to Godot Sentinel MCP
First off, thank you for considering contributing to Sentinel! We're building the future of AI-powered game development, and every contribution makes a difference.
## ๐ Ways to Contribute
### ๐ **Bug Reports**
Found a bug? Help us squash it!
- Use our [bug report template](.github/ISSUE_TEMPLATE/bug_report.md)
- Include steps to reproduce
- Provide your environment details (OS, Node.js version, Godot version)
### โจ **Feature Requests**
Have an idea for making Sentinel better?
- Use our [feature request template](.github/ISSUE_TEMPLATE/feature_request.md)
- Explain the problem you're trying to solve
- Describe your ideal solution
### ๐ **Documentation**
Help make Sentinel easier to use!
- Fix typos or unclear explanations
- Add examples and tutorials
- Improve API documentation
### ๐ป **Code Contributions**
Ready to dive into the code?
- Check our [good first issues](https://github.com/Snack-JPG/Godot-Sentinel-MCP/labels/good%20first%20issue)
- Look at our [roadmap](README.md#-roadmap) for bigger features
## ๐ Quick Start for Contributors
### 1. Fork & Clone
```bash
# Fork the repo on GitHub, then:
git clone https://github.com/YOUR_USERNAME/Godot-Sentinel-MCP.git
cd Godot-Sentinel-MCP
```
### 2. Install Dependencies
```bash
npm install
```
### 3. Run Tests
```bash
npm test
npm run test:watch # For development
```
### 4. Build & Test Locally
```bash
npm run build
npm link # Install CLI locally
```
### 5. Create Test Project
```bash
./create-test-project.sh
# Now test your changes!
```
## ๐ Development Workflow
### Branch Naming
- `feature/description` - New features
- `fix/description` - Bug fixes
- `docs/description` - Documentation
- `refactor/description` - Code improvements
### Commit Messages
We use [Conventional Commits](https://www.conventionalcommits.org/):
```
feat: add support for Godot 3.x projects
fix: resolve parser error with multiline stack traces
docs: improve MCP integration guide
refactor: simplify error detection pipeline
test: add integration tests for patcher module
```
### Pull Request Process
1. **Create a branch** from `main`
2. **Make your changes** with tests
3. **Update documentation** if needed
4. **Ensure tests pass**: `npm test`
5. **Create PR** with clear description
## ๐งช Testing Guidelines
### Unit Tests
```bash
npm test # Run all tests
npm run test:unit # Unit tests only
npm run test:integration # Integration tests
npm run test:coverage # With coverage report
```
### Manual Testing
```bash
./test-setup.sh # Basic functionality
./test-full-functionality.sh # Complete workflow
```
### Adding Tests
- Add unit tests in `src/**/__tests__/`
- Add integration tests in `src/__tests__/`
- Mock external dependencies (Godot, git commands)
- Test both success and error cases
## ๐ Code Style
We use ESLint and Prettier for consistent code style:
```bash
npm run lint # Check for issues
npm run lint:fix # Auto-fix issues
npm run format # Format with Prettier
```
### TypeScript Guidelines
- Use strict types, avoid `any` when possible
- Add JSDoc comments for public APIs
- Follow existing patterns in the codebase
### File Organization
```
src/
โโโ server.ts # Main MCP server
โโโ adapters/ # Core functionality
โ โโโ godot_shell.ts
โ โโโ patcher.ts
โ โโโ ...
โโโ tools/ # CLI and utilities
โโโ schemas/ # JSON schemas
โโโ __tests__/ # Integration tests
```
## ๐ฏ Priority Areas
We especially welcome contributions in these areas:
### High Priority
- [ ] **Godot 3.x Support** - Backward compatibility
- [ ] **Error Detection Improvements** - Better parsing
- [ ] **Performance Optimization** - Faster test runs
- [ ] **Documentation** - More examples and guides
### Medium Priority
- [ ] **IDE Extensions** - VS Code integration
- [ ] **CI/CD Integrations** - GitHub Actions, etc.
- [ ] **Multi-language Support** - Beyond GDScript
- [ ] **Mobile Testing** - Device deployment
### Good First Issues
- [ ] **Add more error pattern tests** - Expand parser coverage
- [ ] **Improve CLI help text** - Better user experience
- [ ] **Add configuration validation** - Better error messages
- [ ] **Create example projects** - More test cases
## ๐ Debugging Tips
### Running with Debug Logs
```bash
DEBUG=sentinel:* npm start # All debug logs
DEBUG=sentinel:parser npm start # Parser logs only
```
### Testing with Mock Godot
```bash
# Use our test project instead of real Godot
GODOT_PROJECT_ROOT=../test-game npm start
```
### MCP Protocol Debugging
```bash
# Test MCP endpoints directly
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-d '{"method":"tools/list","id":"debug"}'
```
## ๐ Architecture Overview
Understanding the codebase structure:
### Core Flow
```
User Command โ CLI โ MCP Server โ Adapters โ Godot/Git
โ โ
WebSocket โโโ Events โโโ Parser
```
### Key Components
- **`server.ts`** - MCP protocol implementation
- **`godot_shell.ts`** - Runs Godot commands, captures output
- **`parser_godot4.ts`** - Extracts errors from logs
- **`patcher.ts`** - Git operations and patch application
- **`context.ts`** - File operations and project analysis
### Adding New MCP Tools
1. Add tool definition in `server.ts`
2. Implement handler method
3. Add to `listTools()` response
4. Write tests
5. Update documentation
## ๐ Community
### Code of Conduct
We follow the [Contributor Covenant](CODE_OF_CONDUCT.md). Please be respectful and inclusive.
### Getting Help
- **Discord**: [Sentinel MCP Community](https://discord.gg/sentinel-mcp)
- **GitHub Discussions**: Ask questions and share ideas
- **Email**: contributors@sentinel-mcp.com
### Recognition
Contributors are recognized in:
- README acknowledgments
- Release notes
- GitHub contributor graphs
- Optional listing in CLI `--credits`
## ๐ Legal
By contributing, you agree that:
- Your contributions will be licensed under MIT License
- You have the right to submit the code you're contributing
- You're okay with your name being listed as a contributor
## ๐ Thank You!
Every contribution makes Sentinel better for the entire Godot community. Whether you're fixing a typo or implementing a major feature, you're helping make game development more accessible and enjoyable for everyone.
**Happy coding!** ๐