Thanks for your interest in contributing to Skilluv. This document explains how to participate.
This project adheres to the Contributor Covenant Code of Conduct. By participating, you agree to uphold this code. Report unacceptable behavior to the maintainers.
- Search existing issues first
- Use the "Bug report" issue template
- Include: environment, reproduction steps, expected vs actual behavior, logs if relevant
- Open a "Feature request" issue first — discuss before coding
- Explain the use case, not just the solution
- Larger features may require a design discussion before a PR is accepted
- Fork the repository
- Create a branch:
git checkout -b feature/short-descriptionorfix/short-description - Make your changes with clear commits (see commit conventions below)
- Ensure tests pass locally
- Update documentation if you change behavior
- Push to your fork and open a pull request
- Fill the PR template completely
Follow Conventional Commits:
type(scope): short description
- feat: new feature
- fix: bug fix
- docs: documentation only
- refactor: no behavior change
- test: tests only
- chore: tooling, build, dependencies
- perf: performance improvement
- ci: CI changes
Example: feat(auth): add magic link expiration configuration
- One logical change per PR — do not bundle unrelated fixes
- Tests required for new features and bug fixes
- CI must pass before review
- Discussion in issues before large changes — avoid surprise refactors
- AI-assisted contributions are welcome and encouraged — disclose the assistance level in the PR description (see AI Policy below)
Skilluv is AI-friendly. You may use any AI coding assistant (Copilot, Cursor, ChatGPT, etc.) to write, review, or refactor code. We only ask that you:
- Verify the code works as intended — you own the PR
- Disclose significant AI assistance in the PR description (a single sentence is enough)
- Refactor AI-generated code so it fits the project's style and is maintainable
- Never paste secrets, private keys, or proprietary data into an AI prompt
See the README.md for local setup instructions.
Language-specific style is enforced by CI:
- Rust:
cargo fmt+cargo clippy(strict) - TypeScript/Svelte:
prettier+eslint - Python:
ruff+black
Run these locally before pushing.
- GitHub Discussions for questions and ideas
- GitHub Issues for bugs and concrete feature requests
- Discord (link in README) for real-time chat
- Please be patient — this is a small maintainer team
By submitting a contribution, you agree that your work is licensed under the same license as the project (see LICENSE). No CLA is required.
Contributors are listed automatically via GitHub. Significant contributors may be highlighted in release notes.
Merci pour ta contribution !