First off, thank you for considering contributing to this project! 🎉
This document provides guidelines for contributing to Fluent. Following these guidelines helps maintain code quality and makes the contribution process smooth for everyone.
- Code of Conduct
- Getting Started
- How Can I Contribute?
- Development Guidelines
- Submission Guidelines
- Community
This project adheres to a code of conduct that all contributors are expected to follow. By participating, you are expected to uphold this code:
- Be respectful - Treat everyone with respect and consideration
- Be collaborative - Work together and help each other
- Be constructive - Provide helpful feedback
- Be inclusive - Welcome contributors from all backgrounds
- Be patient - Remember that everyone is learning
- Claude Code installed
- Git for version control
- Basic understanding of:
- JSON data structures
- Markdown formatting
- YAML frontmatter
- Language learning principles (helpful but not required)
-
Fork the repository:
git clone https://github.com/m98/fluent.git cd fluent -
Create a branch for your work:
git checkout -b feature/your-feature-name
-
Test the system:
claude /setup
-
Make your changes and test thoroughly
Before creating bug reports, please check existing issues to avoid duplicates.
When filing a bug report, include:
- Clear, descriptive title
- Exact steps to reproduce
- Expected vs actual behavior
- Screenshots if applicable
- Your environment (OS, Claude Code version)
- Error messages or logs
Use this template:
**Bug Description:**
A clear description of what the bug is.
**To Reproduce:**
1. Run command '...'
2. Enter '...'
3. See error
**Expected Behavior:**
What you expected to happen.
**Screenshots:**
If applicable, add screenshots.
**Environment:**
- OS: [e.g. macOS 14.0]
- Claude Code Version: [e.g. 1.0.0]
- Target Language: [e.g. Spanish]Enhancement suggestions are tracked as GitHub issues.
When suggesting an enhancement:
- Use a clear, descriptive title
- Provide detailed description of suggested enhancement
- Explain why this enhancement would be useful
- List examples of how it would work
- Include mockups if applicable
Want to add optimizations for a specific language? Great!
Steps:
- Create
languages/{language-code}/directory - Add language-specific grammar rules
- Add common error patterns
- Add frequency lists
- Document in
languages/{language-code}/README.md
Example structure:
languages/
├── es-ES/ # Spanish
│ ├── grammar-rules.json
│ ├── common-errors.json
│ ├── frequency-list.json
│ └── README.md
├── fr-FR/ # French
│ └── ...
└── ja-JP/ # Japanese
└── ...
Documentation improvements are always welcome!
Areas to contribute:
- Clarifying existing docs
- Adding examples
- Fixing typos
- Adding translations
- Creating tutorials
- Recording video guides
Contributions to improve the learning experience:
- Better progress visualizations
- More engaging feedback messages
- Clearer error messages
- Improved statistics display
Markdown Files:
- Use consistent heading hierarchy
- Include code blocks with language tags
- Use tables for structured data
- Keep lines under 120 characters when possible
JSON Files:
- Use 2-space indentation
- Include comments (where supported)
- Validate JSON structure
- Use meaningful key names
Command Files:
- Include YAML frontmatter
- Clear step-by-step instructions
- Use consistent formatting
- Include examples
Follow these conventions:
Format:
<type>(<scope>): <subject>
<body>
<footer>
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Formatting changesrefactor: Code restructuringtest: Adding testschore: Maintenance tasks
Examples:
feat(vocab): Add image-based vocabulary exercises
- Implement image loading
- Add image-to-word matching
- Update vocab command
Closes #123
fix(spaced-repetition): Correct SM-2 interval calculation
The easiness factor was not being updated correctly
when quality score was below 3.
Fixes #456
Before submitting, test:
- Run
/setupwith different languages - Test all slash commands
- Verify data is saved correctly
- Check spaced repetition scheduling
- Test edge cases (empty data, invalid input)
- Ensure backwards compatibility
Testing checklist:
- [ ] /setup completes successfully
- [ ] /learn session works
- [ ] /review shows correct items
- [ ] /vocab tracks correctly
- [ ] /writing provides feedback
- [ ] /speaking records patterns
- [ ] /reading tests comprehension
- [ ] /progress shows statistics
- [ ] Data files update correctly
- [ ] Hooks trigger as expected-
Create a feature branch:
git checkout -b feature/my-new-feature
-
Make your changes:
- Write clear, commented code
- Follow style guidelines
- Add/update tests
- Update documentation
-
Commit your changes:
git add . git commit -m "feat(scope): description"
-
Push to your fork:
git push origin feature/my-new-feature
-
Open a Pull Request:
- Use descriptive title
- Reference related issues
- Describe changes in detail
- Include screenshots if applicable
- List any breaking changes
## Description
Brief description of changes.
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Performance improvement
- [ ] Code refactoring
## Testing
- [ ] Tested with multiple languages
- [ ] All slash commands work
- [ ] Data tracking verified
- [ ] No regressions found
## Screenshots (if applicable)
## Checklist
- [ ] Code follows style guidelines
- [ ] Self-review completed
- [ ] Comments added for complex code
- [ ] Documentation updated
- [ ] No new warnings generated
- [ ] Related issues referenced
## Additional Notes
Any additional information.- Maintainer review - A maintainer will review your PR
- Feedback - Address any requested changes
- Approval - Once approved, your PR will be merged
- Recognition - You'll be added to contributors list!
Contributors are recognized in several ways:
- Listed in README.md contributors section
- Mentioned in release notes
- Added to CONTRIBUTORS.md
- Special badges for significant contributions
- 💬 GitHub Discussions - Ask questions, share ideas
- 🐛 GitHub Issues - Report bugs, request features
- 📧 Email - For sensitive issues
- 📖 Documentation - Check the docs first
- Be patient - Maintainers are volunteers
- Be specific - Provide details and examples
- Be constructive - Focus on solutions
- Be respectful - Treat everyone kindly
- README - Project overview
- LICENSE - MIT License
- Issues - Known issues
- Discussions - Community forum
We're especially interested in contributions for:
- Language-specific optimizations - Grammar rules, common errors
- Audio features - Pronunciation practice, listening exercises
- Visual enhancements - Better progress charts, statistics
- Mobile support - Companion app or mobile interface
- Performance - Optimize data loading, improve speed
- Accessibility - Make system more accessible
- Testing - Add comprehensive test coverage
Don't hesitate to ask! Here's how:
- Check existing documentation
- Search past issues
- Ask in discussions
- Open a new issue
Every contribution makes this project better. Whether you're fixing a typo, reporting a bug, or adding a major feature - thank you for being part of this community!
Happy Contributing! 🚀
Last updated: 2025-11-17