Thank you for your interest in contributing to RimAI Framework! This document provides guidelines for contributing to this open-source project.
- .NET Framework 4.7.2 SDK
- Visual Studio Code with C# Dev Kit
- RimWorld 1.6+ (for testing)
- Git for version control
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/Rim_AI_Framework.git - Create a feature branch:
git checkout -b feature/your-feature-name - Install dependencies:
dotnet restore - Build the project:
dotnet build
- Bug Reports: Help us identify and fix issues
- Feature Requests: Suggest new functionality
- Code Contributions: Implement features or fix bugs
- Documentation: Improve or add documentation
- Translations: Add or improve language support
- Testing: Help test new features and releases
Before creating an issue:
- Check if the issue already exists
- Provide a clear title and description
- Include steps to reproduce
- Attach relevant logs or screenshots
- Specify your RimWorld version and mod list
- Ensure your code follows the project's coding standards
- Include tests for new functionality
- Update documentation as needed
- Provide a clear description of changes
- Link to related issues
- Request review from maintainers
- Use C# naming conventions
- Include XML documentation for public APIs
- Follow the existing indentation and formatting
- Use meaningful variable and method names
/// <summary>
/// Processes a case file and generates an AI response.
/// </summary>
/// <param name="caseFile">The case to process</param>
/// <returns>AI-generated response or null if failed</returns>
public async Task<string> ProcessCaseAsync(CaseFile caseFile)
{
if (caseFile == null)
{
Log.Error("RimAI Framework: Null case file provided");
return null;
}
// Implementation here
}- Follow the Framework vs. Content separation principle
- Use dependency injection where appropriate
- Implement proper error handling and logging
- Make classes testable and mockable
- Follow SOLID principles
- Create a new folder:
Languages/YourLanguage/Keyed/ - Copy
Settings.xmlfrom the English folder - Translate all text values (keep keys unchanged)
- Test in-game to ensure proper display
- Consider RTL languages special requirements
- Use appropriate technical terminology
- Maintain consistency across all strings
- Consider cultural context
- Test with actual users when possible
- Test with a fresh RimWorld install
- Test with common mod combinations
- Verify all UI elements work correctly
- Test edge cases and error conditions
- Write unit tests for new functionality
- Ensure tests are deterministic
- Mock external dependencies (LLM APIs)
- Test both success and failure scenarios
- All public APIs must have XML documentation
- Include parameter descriptions and return values
- Document exceptions that may be thrown
- Provide usage examples for complex APIs
- Keep language simple and accessible
- Include screenshots where helpful
- Provide step-by-step instructions
- Update documentation with code changes
feature/description- New featuresbugfix/description- Bug fixesdocs/description- Documentation changesrefactor/description- Code refactoring
Use clear, descriptive commit messages:
feat: add streaming support for LLM responses
fix: resolve null reference in case processing
docs: update API documentation for LLMManager
refactor: simplify settings management logic
- Feature freeze and testing period
- Update version numbers
- Update CHANGELOG.md
- Create release notes
- Tag release in Git
- Publish to Steam Workshop
- Core framework stability
- LLM integration reliability
- Performance optimization
- Security and privacy features
- Additional language support
- Enhanced UI/UX
- Developer tools and debugging
- Community features
- Advanced customization options
- Experimental features
- Non-essential integrations
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: General questions and community discussion
- Discord: Real-time chat with developers and community (coming soon)
- All code changes require review
- Maintainers will provide feedback
- Address feedback promptly
- Be open to suggestions and improvements
- All contributions are licensed under MIT License
- Ensure you have rights to contribute code
- Don't include copyrighted material without permission
- Respect RimWorld's intellectual property
- Contributors will be acknowledged in releases
- Major contributors may be invited as maintainers
- Credit will be given in documentation and release notes
We appreciate all contributions, no matter how small! Contributors will be:
- Listed in the project's contributor list
- Mentioned in release notes
- Invited to community events
- Given access to beta features
- @oidahdsah0 - Project Creator & Lead Developer
Want to see your name here? Start contributing today!
Thank you for helping make RimAI Framework better for everyone!