Thank you for your interest in contributing! This guide will help you get started.
- Fork the repo and clone it
- Load the extension in Chrome (
chrome://extensions/→ Developer mode → Load unpacked) - Make your changes
- Test on actual coding platform pages
- Submit a pull request
This is the most common contribution. Each platform is a single file in content-scripts/platforms/.
- Create
content-scripts/platforms/yourplatform.js - Implement the platform object with these methods:
const YourPlatform = {
detect() {
// Return true if current page is this platform's problem page
return window.location.hostname.includes('yourplatform.com');
},
getProblemTitle() {
// Return the problem title as a string, or null
},
getProblemStatement() {
// Return the problem description text (max 3000 chars), or null
},
getUserCode() {
// Return the user's code from the editor, or null
},
getLanguage() {
// Return the selected programming language, or null
},
getDifficulty() {
// Return difficulty level if available, or null
},
};- Add the platform to
lib/constants.jsin thePLATFORMSobject - Register it in
content-scripts/detector.jsin the_platformsarray - Add URL patterns to
manifest.json(content_scripts matches + host_permissions) - Test on real problem pages
- Always provide multiple fallback selectors — platforms change their DOM frequently
- Use
data-*attributes when available (more stable than class names) - Test with at least 3 different problems
- Include a URL-based fallback for
getProblemTitle()
- Vanilla JavaScript (no TypeScript, no JSX)
- No build step required for development
- Use
const/let, nevervar - Descriptive function and variable names
- Comments only where the logic isn't self-evident
- Create a feature branch from
main - Make focused, single-purpose commits
- Test your changes on real coding platform pages
- Fill out the PR template
- Wait for review
Use the bug report template. Include:
- Which platform and problem URL
- What you expected vs. what happened
- Browser version
- Console errors (if any)
Please read our Code of Conduct.