Thank you for your interest in contributing to Devvami! We welcome contributions from everyone.
Please read and follow our Code of Conduct.
-
Fork the repository on GitHub
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/devvami.git cd devvami -
Use correct Node.js version:
nvm use
-
Install dependencies:
pnpm install
-
Verify setup:
pnpm test pnpm lint
- JavaScript (ESM) with JSDoc type annotations
- JSDoc required on all public functions:
@param,@returns,@typedef,@type - Files must have
"type": "module"in package.json (native ESM) - ESLint + Prettier enforced via lefthook pre-commit
Use the interactive commit wizard:
pnpm commitThis ensures your commits follow Conventional Commits format:
<type>(<scope>): <subject>
<body>
<footer>
Examples:
feat(commands): add dvmi tasks filter
fix(services): correct github auth flow
docs(readme): update install instructions
-
Run tests & linting:
pnpm test pnpm lint -
Fix any issues:
pnpm lint:fix pnpm format
-
Update snapshots if needed:
pnpm test:update
-
Create a feature branch:
git checkout -b feat/my-feature
-
Push to your fork:
git push origin feat/my-feature
-
Open a Pull Request on the main repository
-
Fill the PR template with:
- What does this PR do?
- Link to related issue (if any)
- Breaking changes?
- Test coverage?
-
Wait for CI/CD to pass and maintainers to review
- One feature per PR — keep scope focused
- Tests required — new features must have test coverage
- Update docs — if you change behavior, update README/AGENTS.md
- Keep commits clean — rebase before merging if needed
- Be descriptive — in commit messages and PR description
Use GitHub Issues with the appropriate template:
- Bug Report — Something is broken
- Feature Request — A new idea or enhancement
- Question — Ask for help
Please search existing issues first to avoid duplicates.
Found a vulnerability? Do not open a public issue. Please read SECURITY.md for responsible disclosure.
- Documentation — Read README.md and AGENTS.md
- Issues — Open a GitHub Discussion or Issue
- Chat — Check if there's an active community channel
Thank you for contributing! 🎉