First off, thank you for considering contributing to SkillSync! 🎉
It's people like you that make SkillSync such a great tool for tracking and developing skills. This document provides guidelines and steps for contributing.
- Code of Conduct
- Getting Started
- How Can I Contribute?
- Development Setup
- Pull Request Process
- Style Guidelines
- Community
This project and everyone participating in it is governed by our commitment to providing a welcoming and inclusive environment. By participating, you are expected to uphold this commitment.
Positive behavior includes:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Unacceptable behavior includes:
- Trolling, insulting/derogatory comments, and personal attacks
- Public or private harassment
- Publishing others' private information without permission
- Other conduct which could reasonably be considered inappropriate
Before you begin, ensure you have the following installed:
- Node.js 18.17 or later
- pnpm (recommended) or npm
- Git
- A code editor (we recommend VS Code)
New to open source? Here are some resources to help you get started:
Look for issues labeled good first issue - these are specifically curated for new contributors!
Before creating bug reports, please check existing issues to avoid duplicates.
When reporting a bug, include:
- Clear title - Descriptive summary of the issue
- Steps to reproduce - Detailed steps to recreate the bug
- Expected behavior - What you expected to happen
- Actual behavior - What actually happened
- Screenshots - If applicable
- Environment details:
- OS and version
- Browser and version
- Node.js version
- Any relevant error messages
Bug Report Template:
## Bug Description
A clear description of the bug.
## Steps to Reproduce
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. See error
## Expected Behavior
What you expected to happen.
## Actual Behavior
What actually happened.
## Screenshots
If applicable, add screenshots.
## Environment
- OS: [e.g., macOS 14.0]
- Browser: [e.g., Chrome 120]
- Node.js: [e.g., 20.10.0]We love feature suggestions! Before suggesting:
- Check if the feature already exists
- Check if there's already an open issue for it
- Consider if it aligns with the project's goals
Feature Request Template:
## Feature Description
A clear description of the feature.
## Problem it Solves
What problem does this feature solve?
## Proposed Solution
How do you envision this working?
## Alternatives Considered
Any alternative solutions you've considered.
## Additional Context
Any other context or screenshots.Documentation improvements are always welcome:
- Fix typos or clarify language
- Add examples or tutorials
- Improve code comments
- Update outdated information
Ready to write some code? Here's how:
- Find an issue to work on (or create one)
- Comment on the issue to let others know you're working on it
- Fork the repository
- Create a feature branch
- Write your code
- Write/update tests if applicable
- Submit a pull request
# Fork the repo on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/skillsync.git
cd skillsyncpnpm installcp .env.example .env
# Fill in your environment variablesFollow the database setup instructions in the README.
pnpm dev# Create a branch for your feature/fix
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix- Test your changes - Ensure everything works as expected
- Update documentation - If you changed APIs or added features
- Follow style guidelines - Run linting and formatting
- Write meaningful commits - Use conventional commit messages
We follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation onlystyle: Formatting, missing semicolons, etc.refactor: Code change that neither fixes a bug nor adds a featureperf: Performance improvementtest: Adding missing testschore: Maintenance tasks
Examples:
feat(auth): add Google OAuth support
fix(dashboard): resolve skill count display issue
docs(readme): update installation instructions
refactor(api): simplify document upload logic-
Push your branch to your fork
git push origin feature/your-feature-name
-
Open a Pull Request on GitHub
-
Fill out the PR template with:
- Clear description of changes
- Link to related issue(s)
- Screenshots if UI changes
- Any breaking changes
-
Request a review
- PRs require at least one approval before merging
- Address any requested changes
- Keep your branch up to date with
main - Be patient - reviews may take a few days
- Use TypeScript for all new code
- Follow the existing code style
- Use meaningful variable and function names
- Add JSDoc comments for public APIs
/**
* Extracts skills from a document using AI analysis
* @param documentId - The ID of the document to analyze
* @returns Array of extracted skills with confidence scores
*/
async function extractSkills(documentId: string): Promise<Skill[]> {
// Implementation
}- Use functional components with hooks
- Keep components small and focused
- Use TypeScript interfaces for props
- Follow the existing folder structure
interface SkillCardProps {
skill: Skill;
onEdit?: (skill: Skill) => void;
}
export function SkillCard({ skill, onEdit }: SkillCardProps) {
// Component implementation
}- Use Tailwind CSS utility classes
- Follow the existing design system
- Use CSS variables for custom colors
- Ensure responsive design
components/
├── feature-name/
│ ├── feature-component.tsx
│ ├── feature-utils.ts
│ └── index.ts
Before committing, run:
pnpm lint- GitHub Issues - For bugs and feature requests
- GitHub Discussions - For questions and general discussion
- ⭐ Star the repository to show support
- 👁 Watch for updates and new releases
Contributors will be recognized in:
- The README contributors section
- Release notes when their changes ship
If you have any questions not covered here, feel free to:
- Open a GitHub issue
- Start a GitHub discussion
Thank you for contributing to SkillSync! 🚀
Made with ❤️ by the SkillSync community