First off, thank you for considering contributing to Simili! 🎉
- Code of Conduct
- Developer Certificate of Origin (DCO)
- Getting Started
- How Can I Contribute?
- Development Setup
- Pull Request Process
- Style Guidelines
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code.
This project uses the Developer Certificate of Origin (DCO) to ensure that all contributions are properly licensed. The DCO is enforced by the DCO bot on every pull request.
Every commit in your PR must include a Signed-off-by line. The easiest way to do this is with the -s flag:
git commit -s -m "feat: add awesome feature"This appends a line like:
Signed-off-by: Your Name <your.email@example.com>
Make sure the name and email match your Git configuration:
git config user.name "Your Name"
git config user.email "your.email@example.com"If you submitted a PR before the DCO check was enabled, you do not need to rebase. You have two options:
When the DCO check fails, a bot will comment on your PR asking if you'd like to sign. Simply reply with the following exact phrase:
I have read the DCO document and I hereby sign the DCO
The bot will then push a signed-off remediation commit to your branch automatically.
git commit --allow-empty -s -m "chore: retroactive DCO sign-off"
git pushA third-party (e.g. a maintainer) can also sign off on your behalf by pushing a remediation commit to your branch.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/simili-bot.git cd simili-bot - Add the upstream remote:
git remote add upstream https://github.com/similigh/simili-bot.git
- Use the bug report template
- Check if the issue already exists
- Include as much detail as possible
- Use the feature request template
- Explain the problem you're trying to solve
- Describe your proposed solution
- Look for issues labeled
good first issueorhelp wanted - Comment on the issue to let others know you're working on it
- Create a feature branch from
main - Make your changes and commit with the
-sflag (see DCO) - Submit a pull request
- Go 1.23+
- Git
# Build all packages
go build ./...
# Run tests
go test ./...
# Run linter
go vet ./.../cmd/simili # CLI entry point
/internal/core # Core packages (config, pipeline, state)
/internal/steps # Pipeline steps (Lego blocks)
/internal/integrations # External service clients
/DOCS # Documentation
-
Create a feature branch:
git checkout -b feature/my-feature
-
Make your changes and commit with clear messages:
git commit -m "feat: add awesome feature"We follow Conventional Commits:
feat:- New featurefix:- Bug fixdocs:- Documentationrefactor:- Refactoringtest:- Testschore:- Maintenance
-
Keep your branch updated:
git fetch upstream git rebase upstream/main
-
Push and create a PR:
git push origin feature/my-feature
-
Fill out the PR template completely
-
Address review feedback promptly
- Follow standard Go conventions
- Run
go fmtbefore committing - Run
go vetto catch issues - Keep functions focused and small
- Add comments for exported functions
- Use Conventional Commits
- Keep commits atomic and focused
- Write clear commit messages
- Update docs when changing behavior
- Use clear, concise language
- Include examples where helpful
Thank you for contributing! 🚀