Ways to Contribute
Bug Fixes
Fix crashes, errors, or unexpected behavior
New Features
Add AI model integrations, UI improvements, or new capabilities
Documentation
Improve guides, add examples, or fix typos
Translations
Help make Cluely accessible in more languages
Getting Started
Install Dependencies
Create a Branch
feature/- New featuresfix/- Bug fixesdocs/- Documentation changesrefactor/- Code improvements without behavior changes
Code Style and Standards
TypeScript Guidelines
React Component Patterns
Electron Best Practices
File Organization
- Helper classes go in
electron/with descriptive names - React pages go in
src/_pages/ - Reusable components go in
src/components/ - One component per file (except tiny sub-components)
Naming Conventions
| Type | Convention | Example |
|---|---|---|
| Files | PascalCase for components | ScreenshotHelper.ts |
| camelCase for utilities | ipcHandlers.ts | |
| Classes | PascalCase | AppState, WindowHelper |
| Interfaces | PascalCase | ScreenshotMetadata |
| Functions | camelCase | takeScreenshot() |
| Variables | camelCase | screenshotPath |
| Constants | UPPER_SNAKE_CASE | MAX_SCREENSHOTS |
| React Components | PascalCase | Queue, ScreenshotItem |
Git Commit Guidelines
Commit Message Format
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, no logic change)refactor: Code refactoringperf: Performance improvementstest: Adding testschore: Build process, dependencies, etc.
Commit Frequency
Commit often, push less frequentlyMake small, logical commits as you work. Each commit should represent a single conceptual change. You can always squash commits later if needed.
Pull Request Process
Ensure Your Code Meets Standards
- TypeScript compiles without errors
- No console warnings or errors
- Code follows style guidelines
- Commits have clear messages
Update Documentation
If you:
- Add a new feature → Update relevant docs
- Change configuration → Update setup guide
- Fix a bug → Add to troubleshooting if relevant
Address Feedback
- Respond to review comments
- Make requested changes
- Push additional commits (don’t force push unless asked)
Testing Guidelines
Manual Testing Checklist
Before submitting a PR, test:Core Functionality
Core Functionality
- App launches without errors
- Window shows/hides with
Cmd/Ctrl+Shift+Space - Screenshots captured with
Cmd/Ctrl+H - Screenshots appear in queue
- AI analysis works (test with actual API key)
- Solutions display correctly
- App quits properly
Edge Cases
Edge Cases
- Works with 0 screenshots
- Works with maximum (5) screenshots
- Handles missing API key gracefully
- Handles network errors (disconnect WiFi)
- Works across multiple monitors
- Window repositions correctly after screen resolution change
Platform Testing
Platform Testing
- macOS: Window stays on top in full-screen apps
- Windows: UI loads correctly
- Linux: Window is focusable and interactive
- All platforms: Keyboard shortcuts work
Adding Automated Tests
While Cluely doesn’t have extensive automated tests yet, contributions adding tests are welcome! Potential areas for testing:- Unit tests for helper classes (
ScreenshotHelper,LLMHelper) - Integration tests for IPC communication
- E2E tests with Playwright or Spectron
Common Contribution Scenarios
Adding a New AI Provider
Fixing a Bug
Reproduce the Issue
- Create minimal test case
- Identify affected files
- Check console for error messages
Fix and Test
- Make the smallest change that fixes the issue
- Test the fix thoroughly
- Ensure no regressions
Improving UI/UX
Design Solution
- Create mockups or wireframes
- Consider accessibility
- Maintain consistency with existing UI
Code Review Expectations
What Reviewers Look For
Functionality
- Does it work as intended?
- Are edge cases handled?
- No new bugs introduced?
Code Quality
- Follows style guidelines?
- Well-structured and readable?
- Appropriate error handling?
Performance
- No unnecessary re-renders?
- Efficient algorithms?
- No memory leaks?
Maintainability
- Clear variable/function names?
- Commented where necessary?
- Follows existing patterns?
Responding to Feedback
Be receptive to feedback! Code review is collaborative, not adversarial. If you disagree with a suggestion, explain your reasoning politely.
- “Good catch! I’ll fix that.”
- “I chose this approach because X, but I’m open to alternatives.”
- “Can you clarify what you mean by…?”
- Defensive reactions
- Ignoring feedback
- Making unrelated changes in review commits
Development Environment Setup
Recommended tools for Cluely development:Code Editor
Visual Studio Code (recommended) Install extensions:- ESLint - Code linting
- Prettier - Code formatting
- TypeScript Vue Plugin - Better TypeScript support
- Tailwind CSS IntelliSense - Tailwind autocomplete
VS Code Settings
Add to.vscode/settings.json:
Resources
Electron Docs
Official Electron documentation
React Docs
React official documentation
TypeScript Handbook
Learn TypeScript fundamentals
Tailwind CSS
TailwindCSS utility classes
Getting Help
Read the Docs
Review the Architecture and Building guides.
Contact Maintainer
For commercial integrations or custom development, reach out on Twitter.
Recognition
Contributors are recognized in:- GitHub contributor graph
- Release notes (for significant contributions)
- README acknowledgments (for major features)
Ready to Build?
Head back to the building guide to start coding!